我正在尝试触发已绑定到 Google 表格的 Google App 脚本。来自 firebase 的数据被拉入应触发脚本的工作表中。我目前正在使用 onEdit(e),它在我手动添加数据时起作用,但在从 firebase 更新数据时不起作用。有什么方法可以设置触发器以在每次更改特定范围内的单元格值时运行该函数。谢谢!脚本function onEdit(e) { var ss = SpreadsheetApp.getActive() var dumpingGround = ss.getSheetByName("Dumping Ground") var dataDump = ss.getSheetByName("Data Dump") var ddLastRow = dataDump.getLastRow() + 1 var editCol = e.range.getColumn(); var editRow = e.range.getRow(); Logger.log("edit") /*Copy from dumping ground to data dump*/ if ((editRow == 1 && editCol == 2) || (editRow == 1 && editCol == 3)){ /*Set required range for data dump and dumping ground*/ var ddRange = '\'Data Dump\'!A' +ddLastRow+ ':BF' + ddLastRow var dgCopyRange = '\'Dumping Ground\'!B1:BF1' /*Copy action*/ ss.getRange('\'Dumping Ground\'!B1:BF1').copyTo(ss.getRange(ddRange), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); /*Check data dump row count and delete 1000 rows if necessary*/ if(ddLastRow = 9999){ dataDump.deleteRows(1, 1000); } }};
1 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
从 Apps 脚本文档:
脚本执行和 API 请求不会导致触发器运行。例如,调用 Range.setValue() 来编辑单元格不会导致电子表格的 onEdit 触发器运行。
我认为你最好但会创建一个时间触发器并检查指定范围内的变化。当然,我不能确定这是否对您的目的有用,但值得一试。
以下是一些可供考虑的替代方案:
如果数据拉取是由您的脚本启动的,那么只需让该函数完成所需的操作即可。
如果您有单独的服务来填充数据,则可以使用 Sheets API。
您可以将脚本发布为Web 应用程序并通过 GET 或 POST 触发
您可以尝试使用Apps Script API执行函数。请查看这样做的要求,因为它可能无法满足您的要求。
添加回答
举报
0/150
提交
取消