首页 > 解决方案 > Google Apps 脚本递归调度触发器

问题描述

我正在尝试以编程方式将触发器添加到 Google Apps 脚本 - 我有一个要安排的函数,它使用这样的调用main()包装另一个基于时间的触发器调用ScriptApp.newTrigger().create()

 function main(){
/*
* do stuff
*/

doScriptCallback();
}
 function doScriptCallback(){
  if(CONFIG.CALLBACK_SCRIPT_NAME != ''){
    try {
      ScriptApp.newTrigger(CONFIG.CALLBACK_SCRIPT_NAME)
      .timeBased()
      .after(5000)
      .create()
      Logger.log('Scheduled ' + CONFIG.CALLBACK_SCRIPT_NAME);
    } catch(e) {
      Logger.log(e);
    }
  }
}

main()从编辑器运行正确运行并doScriptCallback()安排功能CONFIG.CALLBACK_SCRIPT_NAME

但是如果我安排main()那么doScriptCallback唯一的记录消息,但该功能不会运行。

这是 Google Apps 脚本中的限制吗?

标签: google-apps-scripttriggers

解决方案


这似乎是一个错误!

已经有一份关于谷歌问题跟踪器的报告详细说明了同样的行为:

Google 似乎确实知道这个问题,但如果它引起问题,您可以在此处提交您自己的错误。

您也可以点击上述页面左上角问题编号旁边的 ☆,这让 Google 知道更多人遇到此问题,因此更有可能更快地被看到 - 这似乎是一个常见问题.

解决方法:

同时,您似乎可以在 Apps Script 中禁用 V8 运行时,这将在 Rhino 运行时运行您的触发器。报告仅影响 V8,我可以确认我能够运行由 Rhino 中的嵌套触发器创建的函数。

您可以按照Run > Disable new Apps Script runtime powered by Chrome V8.


推荐阅读