动态设置谷歌脚本时间驱动的计时器和gmail中的太多计时器错误

时间:2015-07-30 01:16:53

标签: javascript google-apps-script gmail google-apps

我正在使用google脚本为gmail创建一个脚本,该脚本会将超过150天的电子邮件标记为即将删除。因为脚本会在x个时间后超时,所以我会在这段时间之前处理尽可能多的电子邮件,然后设置一个新的触发器,让脚本在2分钟内停止运行。

我担心的是,在设置并运行新触发器之后,即使它是特定的日期和时间触发器,它仍会显示在“当前应用触发器”中。如果这种情况经常发生一段时间(例如一个月),它会导致“此脚本有太多触发器。必须先从脚本中删除触发器,然后才能添加更多内容。错误?

或者过期的特定日期和时间触发器会在某个时候自动删除吗?

有没有人知道这种情况的最佳做法?

谢谢。

1 个答案:

答案 0 :(得分:1)

Apps脚本每个用户/脚本有20个触发器。 为了解决这个问题,我建议使用ScriptApp类在脚本运行时删除任何旧的触发器。 ScriptApp.getProjectTriggers()可用于获取项目触发器的数组。如果您只是在这种情况下使用触发器,并且每次运行脚本时都删除它们,那么您的代码将如下所示:

function triggered(e){
    var triggers = ScriptApp.getProjectTriggers();
    try{
       ScriptApp.deleteTrigger(triggers[0]);
    }catch(e){

    }
    mainLogic()
}