- Web Engineer
- アウトバウンド営業
- Webエンジニア(経験者)
- Other occupations (18)
- Development
- Business
はじめに
Google Apps Script (GAS) を使った自動化は非常に便利だが、タイムアウトエラーに直面したことはないだろうか?
GASのスクリプトが連続して実行できる時間が無料版で最大6分、有料のGoogle Workspaceプランでも30分に設定されているために発生する。
スプレッドシートに書き込む処理が時間がかかるため、getValue, setValueを減らし、getValues, setValues を使いまとめて処理することが速くすることができる。
しかしながら、大量のデータ操作を行うスクリプトを開発していると、コードによる高速化にも限度があり、このタイムアウトエラーは大きな障壁となる。
この記事では、GASのタイムアウトエラーを回避するための実践的な方法を詳しく解説する。
スクリプトを分割し、トリガーで再開する
スクリプトが6分以内に完了しないことが確実な場合、処理を途中で一時停止し、自動的に続きから再開させる仕組みを構築する。
具体的には、GASのコード内から時間駆動型トリガーを設定し、自身を数分後に再実行させるようにする。これにより、スクリプトは一度終了しても、設定したトリガーによって自動的に再び起動される。さらに、中断した場所から処理を再開できるように、スクリプトプロパティを活用して現在の進捗状況を保存する。
1.スクリプトプロパティで進捗を保存する
スクリプトの実行状態(例: 次に処理すべき行番号、処理したデータ量など)をPropertiesServiceを使って保存する。
これにより、スクリプトが途中で終了しても、再開時に前回の状態を読み込み、中断した場所から処理を続けることができる。
// 進捗の取得
const properties = PropertiesService.getScriptProperties();
let lastProcessedRow = Number(properties.getProperty('lastProcessedRow')) || 1;
// 処理の途中で進捗を保存
properties.setProperty('lastProcessedRow', currentRow);
2.時間駆動型トリガーで再開する
ScriptApp.newTrigger()メソッドを使用して、スクリプトを一定時間後(例: 1分後)に自動的に実行するように設定する。
スクリプトの実行がタイムアウトに近づいたと判断したら、次の実行をトリガーに設定し、現在のスクリプトを終了する。
…
記事の続きは下のURLをクリック!
https://rightcode.co.jp/blogs/52115
エンジニア積極採用中です!
現在、WEBエンジニア、モバイルエンジニア、デザイナー、営業などを積極採用中です!
採用ページはこちら:https://rightcode.co.jp/recruit
社員の声や社風などを知りたい方はこちら:https://rightcode.co.jp/blogs?category=life
社長と一杯飲みながらお話しませんか?(転職者向け)
特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk
もっとワクワクしたいあなたへ
現在、ライトコードでは「WEBエンジニア」「モバイルエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「営業」などを積極採用中です!
ライトコードは技術力に定評のある受託開発をメインにしているIT企業です。
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?
ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。
- ライトコードの魅力を知っていただきたい!
- 社風や文化なども知っていただきたい!
- 技術に対して熱意のある方に入社していただきたい!
一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。