首页 > 解决方案 > onChange 将在没有电子表格更改的情况下触发

问题描述

这是一个谷歌触发行为问题。(我认为)。想知道这是否正常。

我有(几张)具有脚本“更改”触发器的工作表。我注意到它们以某种方式在不更改工作表的情况下被触发,并且当工作表关闭时。仅使用 onChange 触发器在触发时增加单元格中的值,单元格值在白天增加,至少每 15 分钟触发一次,有时每分钟触发一次。

我尝试将工作表剥离,摆脱所有 IMPORTDATA 和其他外部数据引用,因此工作表中没有任何内容。很基础。

查看开发人员中心 - 我的执行,我看到它显示了这些执行。由于同一个基本工作表有几个相似的副本,因此一些工作表不会在几个小时内触发 on-change 然后开始快速显示触发器,而另一个工作表似乎在一段时间内表现自己。

就像我说的那样,工作表上没有什么东西,只有几个公式引用了同一张工作表上的单元格,仅此而已。

标签: google-apps-scriptgoogle-sheetsscriptingeventtrigger

解决方案


我在我的一个电子表格上设置了一个测试,看看我是否能得到相同的结果:

function catchChanges(e) {
  var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy hh:mm:ss");
  var ss=SpreadsheetApp.openById('ssid');
  var sh=ss.getSheetByName('Change Log');
  sh.appendRow([ts,e.changeType,e.triggerUid,e.user,e.authMode]);
}

推荐阅读