Google apps script 时间驱动触发器工作不正常
我们正在使用电子表格和应用程序脚本来实现自动化,因此我们在应用程序脚本仪表板中设置了一些基于时间的触发器、一些基于小时的触发器、一些基于每日的触发器。触发器不运行的情况越来越频繁。它们只是没有执行,所以我在仪表板中没有看到任何失败(因为代码是有效的) 我想,这是关于.getActiveSpreadSheet()方法的,当工作表不打开或不可见时,该方法可能不起作用(大多数情况下都是这样),但我最近有一个工作表,我通过id(openById)打开它,触发器仍然可以按照他喜欢的方式工作 简单的示例代码是:Google apps script 时间驱动触发器工作不正常,google-apps-script,google-sheets,triggers,Google Apps Script,Google Sheets,Triggers,我们正在使用电子表格和应用程序脚本来实现自动化,因此我们在应用程序脚本仪表板中设置了一些基于时间的触发器、一些基于小时的触发器、一些基于每日的触发器。触发器不运行的情况越来越频繁。它们只是没有执行,所以我在仪表板中没有看到任何失败(因为代码是有效的) 我想,这是关于.getActiveSpreadSheet()方法的,当工作表不打开或不可见时,该方法可能不起作用(大多数情况下都是这样),但我最近有一个工作表,我通过id(openById)打开它,触发器仍然可以按照他喜欢的方式工作 简单的示例代码
function testTrigger(){
var sheet = SpreadsheetApp.openById($sheetid).getSheetByName("ha")
sheet.getRange("A1").setValue(new Date());
Logger.log("test");
}
在我使用之前
function testTrigger(){
var sheet = SpreadsheetApp.getActiveSpreadsheet.getSheetByName("ha")
sheet.getRange("A1").setValue(new Date());
Logger.log("test");
}
此功能的触发器设置为每分钟触发一次。正如我在表格中看到的,上次运行是12:35:48,但现在是12:40。那它为什么不起作用呢
在我写这篇文章的时候,它突然在12:40:48开火了。但现在又是12:44了,所以已经少了3分了!为什么这种情况不断发生
还有:SpreadsheetApp.getActiveSpreadsheet.getSheetByName(“ha”)甚至可以在封闭的工作表上工作吗?是否要在浏览器中打开并激活图纸?我们已经使用电子表格和应用程序脚本好几个月了,我每次都使用getActiveSpreadsheet.getSheetByName(“ha”),而且效果很好。看来,时间驱动的触发器是有缺陷的atm,我没有其他结论(因为代码和其他一切都是有效的)
有没有办法找出为什么触发器没有触发(除了代码错误之外,我当然会在仪表板上看到)。
如果我使用程序触发器,这些问题也会发生吗
提前谢谢
下面是问题的图像(在这些运行期间,代码或触发器中没有任何更改):
回答您的一些问题
nearMinute(minute)
手动创建触发器,则这“指定触发器运行的分钟数(正负15分钟)”。换句话说:你不能期望应用程序脚本中的触发器在你想要的时间精确运行SpreadsheetApp.getActiveSpreadsheet()
如果您有一个绑定的脚本,而不是一个独立的脚本,那么它就可以工作。在任何情况下,为了避免错误源,明智的做法是使用SpreadsheetApp.openById(id)
而不是SpreadsheetApp.getActiveSpreadsheet()
谢谢你的回答,但是你看到照片了吗?如果我通过仪表板或编程设置触发器每分钟触发一次,那么当然它必须每(!)分钟触发一次!我真的不在乎一分钟中的哪一秒。但正如你所看到的,它根本没有开火。这只是为了测试,我设置了其他人每小时开火,他们有时也不工作。我不明白他们为什么没有被处决。正如我提到的,检查执行和我的触发器是毫无意义的,因为一开始没有执行任何操作(如图中所示)。我试图在回答中指出,即使你设置了一个每分钟触发一次的时间触发器,也没有必要这样做——正如谷歌指定的那样,可能会有明显的延迟。根据你的解释和截图,我假设你没有失败的执行,只有不按时发射的执行?在基于时间的触发器上复制您的样本,我不会遇到任何问题。可能还有其他问题,例如干扰其他触发器?请记住,有一些限制,例如触发器每天的总运行时间。当然,我明白了。这正是重点:我看不到执行情况,因为它们根本没有被执行/触发。每小时触发一次的不同触发器也会发生这种情况(因此它不限于1分钟的触发器,我只是用来测试真正的触发器行为)。因此,没有失败的尝试。即使我们会遇到限制,我们也应该得到异常,就像您的文章(异常消息)中所写的那样。但是没有。所以我一点也不知道错误发生在哪里。你总共有多少个不同的时间触发器,每天的总运行时间是多少?如果您有一个消费者帐户,并且您的总触发器运行时间(对于与您的帐户相关的所有触发器)每天超过90分钟,则可能会跳过一些执行,而不会引发异常。我们使用Gsuite Business,因此我认为,我们不会超出此处的配额。我也很确定,我没有超过20个触发器用于每个脚本(这在各个方面都很糟糕)。问题是,我不知道为什么它没有执行。每小时运行另一个脚本,该脚本在今天04:28、05:28、07:28、08:28执行。所以06:28不见了。当然,执行过程中没有错误,根本就没有。但我会清理一些旧的东西,脚本,触发器等,也许这会有所帮助。有没有办法查一下我现在的qutoa?在这方面我找不到任何东西。