【发布时间】:2019-12-04 11:53:50
【问题描述】:
我们正在使用电子表格和 Apps-Script 来实现一些自动化,因此我们设置了一些基于时间的触发器,有些是每小时一次,有些是每天一次,所有这些都在应用程序脚本仪表板中设置。它越来越频繁地发生,触发器根本不运行。它们只是没有被执行,所以我在仪表板中看不到任何失败(因为代码是有效的)。
我想,这是关于 .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,我没有其他结论(因为代码和其他一切都是有效的)。
有什么方法可以找出触发器没有触发的原因(除了代码错误,我当然会在仪表板中看到)。 如果我使用编程触发器,这些问题也会出现吗?
提前致谢!
【问题讨论】:
标签: google-apps-script google-sheets triggers