Google Apps脚本:不可靠的时间触发器

时间:2013-02-20 04:21:24

标签: google-apps-script google-api google-apps

允许在Google App脚本中链接时间触发器,如下所示:

 function doGet(e){   //first invocation by user, HTTP GET 
    if (e == null || e.parameters == null) {
      return ContentService.createTextOutput("EMPTY");
    }

    saveGetParametersForUser(Session.getUser().getEmail(), e);

    //trigger 10 seconds
    var timeTrigger = ScriptApp.newTrigger("timeDrivenEvent").timeBased().after(10 * 1000).create();

 }


function timeDrivenEvent() { //runs until there are some data in ScriptDB
  Logger.log("INVOKED AT " + new Date());

  removeAllPreviousTriggers(); //removes old time triggers

  var somedata = loadTaskData({email: "" + Session.getUser().getEmail()});
  var remainingData = processTaskData(somedata);

    if(remainingData == null){
       return; //we are finished here
    } 

  removePreviousAndSaveRemainingTaskData(remainingData);

  var timeTrigger = ScriptApp.newTrigger("timeDrivenEvent").timeBased().after(10 * 1000).create();

}
  • 用户首先调用doGet()
  • 在处理完所有数据之前,脚本以10秒的间隔调用自身(例如2分钟处理,10秒没有任何反应,然后再处理2分钟......)
  • 处理数据的大小为〜几千字节,处理时间通常为1-2分钟。

我发现有时脚本中断且数据未完全处理会发生什么变化!我没有收到任何电子邮件提醒,日志或执行记录中没有任何内容 - 一切都很好。

我开始认为启动脚本方法可能要快10秒,但毕竟它在API中...

有什么想法吗? 这是唯一可行的解​​决方案如何将大任务分成小块,因为Google App Script无法运行超过5-6分钟(参见配额)。

1 个答案:

答案 0 :(得分:0)

根据评论中的建议,有一个周期性时间触发器运行良好。

我只是想知道为什么时间触发链接效果不好!我做了什么原则打破了谷歌应用程序脚本不喜欢这样的原因。

文档:https://developers.google.com/apps-script/class_clocktriggerbuilder

方法everyMinutes设置要在传递的分钟数间隔内触发的触发器,该分钟数必须是1,5,10,15或30之一。