【问题标题】:Google Apps Script recursive schedule triggerGoogle Apps 脚本递归调度触发器
【发布时间】:2020-05-04 11:18:36
【问题描述】:

我正在尝试以编程方式将触发器添加到 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 脚本中的限制吗?

【问题讨论】:

  • 也许我还没有完全理解你的问题;我用CONFIG.CALLBACK_SCRIPT_NAME 作为main 对此进行了测试,这似乎没有问题。您从哪里获得要作为函数名称插入触发器的值?
  • CONFIG 只是页面顶部的自定义对象。 CALLBACK_SCRIPT_NAME 是我想以编程方式安排的不相关脚本。 Main() 从 UI 安排为每天运行。 doScriptCallback() 只是一个包装器,用于为配置对象中引用的脚本名称设置时间表。
  • 你在哪里设置CONFIG.CALLBACK_SCRIPT_NAME;这是在main() { //do stuff }里面吗?
  • 不,它是一个位于代码顶部的全局范围变量。

标签: google-apps-script triggers


【解决方案1】:

这似乎是一个错误!

已经有一份关于 Google 问题跟踪器的报告详细说明了相同类型的行为:

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

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

解决方法:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多