【问题标题】:set only one trigger using timeBased method in google apps script在谷歌应用脚​​本中使用基于时间的方法只设置一个触发器
【发布时间】:2021-02-08 06:36:21
【问题描述】:

我目前正在为我的函数添加基于时间的触发器。基本上,我的函数(称为 mainFunction)从 Gmail 帐户获取电子邮件并将其正文显示到电子表格中。我想让函数每 5 分钟调用一次,所以我写了

ScriptApp.newTrigger("mainFunction")
 .timeBased()
 .everyMinutes(5)
 .create();

然后运行我的函数。

我的函数运行良好,我可以在我的电子表格中看到数据。但是,在我运行该函数并等待超过 5 分钟后,当我检查应用程序脚本中的触发器部分时,我看到显示了大量触发器,如下图所示。 triggers on apps script

我认为这里的问题是我设置并创建了一个新触发器,它每 5 分钟运行一次我的“mainFunction”,这就是为什么我在我的应用程序脚本触发器部分看到大量触发器的原因。我对吗?如果我每 5 分钟创建一次新触发器,我不应该这样做,我应该在哪里更改以便每 5 分钟运行一次函数(而不是创建新函数)?

【问题讨论】:

    标签: google-apps-script triggers


    【解决方案1】:

    问题:

    最可能的问题是您已声明此代码:

    ScriptApp.newTrigger("mainFunction")
     .timeBased()
     .everyMinutes(5)
     .create();
    

    脚本中每个函数的外部(全局声明)或内部mainFunction,这就是它每五分钟执行一次的原因。但很可能,您已经在 mainFunction 中声明了它。

    解决方案:

    删除项目的所有当前触发器(或至少删除mainFunction 的触发器)。您可以手动(从当前项目的触发器)或programatically

    删除所有触发器后,请确保将触发器创建代码与mainFunction分开。手动执行 ONLYONCE createTrigger 函数:

    function mainFunction(){
    
      // code to be triggered every 5 minutes
    
    }
    
    function createTrigger() {
      ScriptApp.newTrigger("mainFunction")
     .timeBased()
     .everyMinutes(5)
     .create();
    }
    

    然后您将在项目的触发器菜单中看到只有一个触发器,它将负责每五分钟触发一次mainFunction

    【讨论】:

      猜你喜欢
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多