javascript - 如何仅在“一个单元格”的谷歌表格中显示我的实时传感器数据?
问题描述
基本上,我使用连接到互联网的 m5stack 制作了一台称重机。我正在将我的实时数据导入 Google 电子表格,但是我不想要那么多数据。我只想在单个单元格中显示实时数据。(像一米?)
我尝试在应用程序脚本中编写代码,但发现很困难。
这是我将数据导入电子表格的代码:
function doPost(e) {
// シート取得
var spreadsheet = SpreadsheetApp.openById("***"),
sheet = spreadsheet.getSheets()[0];
var postjsonString = e.postData.getDataAsString();
var postdata = JSON.parse(postjsonString);
date = new Date();
date_time = Utilities.formatDate(date, 'JST', 'yyyy年M月d日 H時m分s秒'),
sheet.appendRow([date_time,postdata.sensor.a]);
}
解决方案
我相信你现在的情况和你的目标如下。
- 您的价值
postdata.sensor.a
是您期望的正确价值。 - 您想将 的值放入
postdata.sensor.a
一个单元格,并且您想创建一个仪表类型的图表(这是来自like a meter?
)。
修改点:
- 根据您的脚本,我想建议使用 2 张纸。一个是日志表,它附加了
sheet.appendRow([date_time,postdata.sensor.a]);
作为日志的值。另一种是使用当前值显示仪表图的图表表。
当以上几点反映到您的脚本时,它变成如下。
修改后的脚本:
在使用此脚本之前,请设置您的电子表格 ID 以及您期望的仪表图的最大值和最小值。
function doPost(e) {
var postjsonString = e.postData.getDataAsString();
var postdata = JSON.parse(postjsonString);
// I modified below script.
var spreadsheet = SpreadsheetApp.openById("###");
var logSheet = spreadsheet.getSheetByName("logSheet") || spreadsheet.insertSheet("logSheet");
var chartSheet = spreadsheet.getSheetByName("chartSheet") || spreadsheet.insertSheet("chartSheet");
// Put the values for the log.
var date_time = Utilities.formatDate(new Date(), 'JST', 'yyyy年M月d日 H時m分s秒');
var values = [date_time, postdata.sensor.a];
logSheet.appendRow(values);
// Put the values for the chart.
chartSheet.getRange("A1:B1").setValues([values]);
// Create gauge chart if the chart is not existing in the chart sheet.
var max = 100; // <--- Please set the maximum value for your actual situation.
var min = 0; // <--- Please set the minumum value for your actual situation.
var charts = chartSheet.getCharts();
if (charts.length == 0) {
var chart = chartSheet.newChart().setChartType(Charts.ChartType.GAUGE).addRange(chartSheet.getRange('B1')).setPosition(3, 1, 0, 0).setOption('height', 300).setOption('width', 300).setOption('title', 'Sample gauge').setOption('max', max).setOption('min', min).build();
chartSheet.insertChart(chart);
}
}
- 在这个修改后的脚本中,当
doPost
运行时,值date_time, postdata.sensor.a
被附加到“logSheet”的工作表中。此外,这些值被放入“chartSheet”工作表中的单元格“A1:B1”中。当这些工作表不存在时,将自动插入工作表。 - 在“chartSheet”,当图表不存在时,使用看跌值创建仪表类型图表。
结果:
将上述脚本用于测试值时,会在“chartSheet”中获得以下结果。
笔记:
- 当您修改 Web Apps 的脚本时,请将 Web Apps 重新部署为新版本。这样,最新的脚本就会反映到 Web 应用程序中。请注意这一点。
- 这是一个简单的修改脚本。所以请根据您的实际情况进行修改。例如,如果您不想使用“logSheet”,请删除它的脚本。
参考:
推荐阅读
- html - 图片高度与文章标签相同
- python - 保存为 html 时,jupyter notebook 不呈现图像/绘图
- angular - 承诺未在 Angular 9 应用程序的 IE11 中定义
- reactjs - 无法通过可访问名称找到警报
- php - 尝试在codeigniter php中上传多个调整大小的图像
- java - 如何在 Android/Java 中使用 AsyncTask 将 URI 传递给 API?
- python - Spyder - 如何在当前控制台中执行 python 脚本?
- reactjs - React 自定义钩子和 useMemo 钩子
- ios - 单击时执行特定操作的自定义 MKAnnotation 引脚 - 自定义引脚未显示
- c - 为什么此函数不返回串行文件中的最后一个完整行?