通过程序化编辑触发 onEdit 触发
Trigger onEdit Trigger through programmatic edit
我构建了一个电子表格,使用 onSubmit 触发器跟踪表单响应。这很好用。然后我想在另一个电子表格上显示电子表格的一部分,并构建了一个脚本来执行此操作。
为了确保第二个电子表格动态更新并与第一个电子表格同步,我尝试使用onEdit可安装触发器;但是,仅当我手动编辑电子表格 1 时,它才以编程方式编辑时不起作用。有什么解决方案吗?
触发器不会在脚本所做的电子表格更改时触发。我认为这个想法是,进行更改的脚本也可以跟进这些更改的任何后果。对于您的情况,我看到三种解决方案:
如果你只想"display part of the spreadsheet on another spreadsheet",那么importrange
命令就足够了,你不需要脚本来做到这一点。
表单提交触发的函数可以修改目标电子表格本身。为此,您需要在提交表单时安装一个可安装的触发器 运行ning,因为简单的触发器无法访问其他电子表格。
如果您真的想在附加到另一个电子表格的脚本中触发一个函数,您可以运行一个基于时间的触发器来检查电子表格的最后更新时间。
#3 示例:可以设置为每 5 分钟 运行 的函数,以检测任何类型的变化。
function checkForUpdates() {
var updated = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).getLastUpdated();
if (new Date() - updated < 300000) {
// updated in the last 5 minutes, do something
}
}
我构建了一个电子表格,使用 onSubmit 触发器跟踪表单响应。这很好用。然后我想在另一个电子表格上显示电子表格的一部分,并构建了一个脚本来执行此操作。
为了确保第二个电子表格动态更新并与第一个电子表格同步,我尝试使用onEdit可安装触发器;但是,仅当我手动编辑电子表格 1 时,它才以编程方式编辑时不起作用。有什么解决方案吗?
触发器不会在脚本所做的电子表格更改时触发。我认为这个想法是,进行更改的脚本也可以跟进这些更改的任何后果。对于您的情况,我看到三种解决方案:
如果你只想"display part of the spreadsheet on another spreadsheet",那么
importrange
命令就足够了,你不需要脚本来做到这一点。表单提交触发的函数可以修改目标电子表格本身。为此,您需要在提交表单时安装一个可安装的触发器 运行ning,因为简单的触发器无法访问其他电子表格。
如果您真的想在附加到另一个电子表格的脚本中触发一个函数,您可以运行一个基于时间的触发器来检查电子表格的最后更新时间。
#3 示例:可以设置为每 5 分钟 运行 的函数,以检测任何类型的变化。
function checkForUpdates() {
var updated = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).getLastUpdated();
if (new Date() - updated < 300000) {
// updated in the last 5 minutes, do something
}
}