0

是否允许像这样在 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 分钟(请参阅配额)。

4

1 回答 1

0

正如评论中所推荐的那样,有一个周期性的时间触发器效果很好。

我只是想知道为什么时间触发链接不起作用!我做了什么原则打破了 Google App Script 不喜欢那样。

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

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

于 2013-02-21T05:15:56.837 回答