如何制作Google Sheet仪表盘图表展示IoT设备提交的最新数据?
嘿,这个需求我之前帮朋友实现过,用Google Apps Script确实是最靠谱的解决方案!核心思路很简单:咱们绕开图表不能选动态范围的限制,专门用一个固定单元格来同步最新的温度值,再让仪表盘图表指向这个单元格就行。下面给你一步步拆解实现步骤:
1. 准备工作:预留固定单元格
先在你的表格里找个不影响原始数据的固定位置,比如Sheet1的D1单元格(随便选,只要你记得住就行),这个单元格专门用来存放最新的温度值。
2. 编写Google Apps Script代码
打开你的Google Sheet,点击顶部菜单的「扩展程序」→「Apps Script」,进入脚本编辑器后,替换默认的myFunction为下面的代码:
function syncLatestTemp() { // 替换成你的工作表名称,比如"温度数据" const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); const lastRow = targetSheet.getLastRow(); // 跳过表头行(假设第一行是表头),如果没有表头可以去掉这个判断 if (lastRow < 2) return; // 假设温度值存在B列(A列是时间戳),根据你的实际列调整数字:A=1,B=2,C=3... const latestTempValue = targetSheet.getRange(lastRow, 2).getValue(); // 将最新温度写入固定单元格D1,改成你预留的单元格位置 targetSheet.getRange("D1").setValue(latestTempValue); }
3. 设置自动触发条件
脚本写好后,得让它在有新数据进来时自动运行:
- 在脚本编辑器顶部,点击「编辑」→「当前项目的触发器」
- 点击右下角的「添加触发器」,按以下设置:
- 选择函数:
syncLatestTemp - 选择部署类型:「Head deployments」
- 事件源:「从电子表格」
- 事件类型:「修改」(这个会在表格有任何修改时触发,包括新增行)
- 点击「保存」,授权脚本访问你的表格权限即可。
- 选择函数:
4. 配置仪表盘图表
回到Google Sheet,插入仪表盘图表:
- 点击「插入」→「图表」,在图表类型里选择「仪表盘」
- 在右侧的图表编辑器中,设置「数据范围」为你预留的固定单元格,比如
Sheet1!D1 - 调整仪表盘的刻度、颜色、标签等样式,符合你的需求。
额外优化建议
- 如果IoT设备是批量新增多行数据,担心触发不及时,可以改成时间驱动触发器:比如每隔5秒运行一次
syncLatestTemp函数,确保最新数据能及时同步。 - 可以加个空值判断,避免空数据覆盖固定单元格:在写入前加
if (latestTempValue !== "") { ... } - 如果有多台IoT设备,给每个设备分配一个专属的固定单元格,就能同时展示多个仪表盘了。
内容的提问来源于stack exchange,提问作者user3284280
相关产品推荐
相关产品推荐

