[GAS]自動処理が途中で止まる場合の対処法

時間制限とかあるからね。仕方ないね。

どういうことか

GASは時間制限がある。

GASは処理が重い。

やたらめったら長いデータを相手にすると、内容が単純だったとしてもめっちゃ時間がかかる。

だからタイムアウトする。

そしたら自動化無理じゃんね、でもやらないと不便だよね。

先人たちは制限の中でも頑張ってたから、あやかっていきましょう。

こんな感じ

この記事で解決した。

GASでタイムアウトエラーを回避する方法【6分の壁/30分の壁】
GASの一度の実行時間は最大6分までで、それを越えるとタイムアウトエラーになってしまうという問題、通称「6分の壁」を克服する方法を紹介します。スクリプトプロパティをいかに使いこなせるかが重要です。

時間制限があるならその手前で中断して再開すればいいということらしい。

中断はともかく再開のイメージが沸かなかったんだけどGASには「スクリプトプロパティ」があって、簡易的なDB的な、WPでいうカスタムフィールド的な使い方ができる。
「ここまでやったよ」が記録できるなら再開できますよねという話。

注意点は、「ScriptProperties」が使えなくなっている点。
代替というか別の書き方があるので、そっちに変える。

let startIndex = Number(ScriptProperties.getProperty('nextIndex'));
↓
let startIndex = Number(PropertiesService.getScriptProperties().getProperty('nextIndex'));

一度発火したら時間主導型で一定時間ごとに一定時間内で発火し続けるようになる。
なので、GASの「実行数」を見るとログが結構貯まることになる。「トリガー」も見覚えのないものが追加される。ビビらないようにね。

あとはこれ、トリガーは上書きされるので、同名の関数で予めに作ったトリガーは消える。

forとかでループを組んだら、条件の上限に達して処理が終わるまで延々繰り返される。
ブラウザを閉じても裏で動き続ける。

注意。

コメント

タイトルとURLをコピーしました