Google Apps Scriptで処理を実行していて
[起動時間の最大値を超えました]
なんてメッセージが出たので対応方法をメモメモ
どうやら5分以上かかる処理をやっちゃダメよ!
ってことらしいのだ。。。
まぁ無限ループとかされてもねってことで
しょうがないのかな
function main(){
var startTime = new Date();
//トリガーを削除
var allTriggers = ScriptApp.getProjectTriggers();
for(var i=0; i < allTriggers.length; i++) {
ScriptApp.deleteTrigger(allTriggers[i]);
}
// 適当なループ
for (var i in xxxxxxx) {
// 処理時間に5分以上経過している場合は、一度処理を終わらせ、再度実行させる
var nowtime = new Date();
var nowdiff = parseFloat((nowtime.getTime()-startTime.getTime())/(1000*60));
if(nowdiff >= 4.8){
ScriptApp.newTrigger("main")
.timeBased()
.everyMinutes(1)
.create();
return;
}
}
}
5分(この例だと正確には4分48秒)以上かかってたら
自分の関数を、1分間隔のトリガーにセットしてから処理終了。
で、再度始まったときにそのトリガーを削除するようにすればOK!
途中までの結果を残しておきたい場合は、
シートとかユーザプロパティやらになんか書き残しておこう!

コメント