Google Apps Scriptで処理を実行していて
[起動時間の最大値を超えました]
なんてメッセージが出たので対応方法をメモメモ
どうやら5分以上かかる処理をやっちゃダメよ!
ってことらしいのだ。。。
まぁ無限ループとかされてもねってことで
しょうがないのかな
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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!
途中までの結果を残しておきたい場合は、
シートとかユーザプロパティやらになんか書き残しておこう!