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