GASで「止まる理由」を体系的に整理する
GASを書いていると、「急に動かなくなった」「エラーが出たけど意味が分からない」という状況に必ず遭遇します。
特に、スプレッドシート操作や自動実行を始めたあたりで、エラーの種類が一気に増えてきます。
GASのエラーは、種類ごとに原因の方向性がほぼ決まっているのが特徴です。
そのパターンを知っていれば、エラーメッセージを見た瞬間に「どこを疑うか」が分かるようになります。
この記事では、GASでよくあるエラーを「原因の種類」ごとに整理し、基本的な対処方法をまとめます。
前回のLogger.logの記事とあわせて、エラー対応の基礎を固めていきましょう。
目次
権限エラー(承認が必要)
GASで最も多いのが、権限に関するエラーです。
初めてGmailやスプレッドシートを操作する関数を実行したときに発生します。
代表的なメッセージは次のようなものです。
- 承認が必要です
- このアプリは確認されていません
これはエラーというより、「まだ許可していない」という状態です。
実行時に表示される承認画面で、アクセスを許可すれば解消します。
注意点として、トリガー実行では承認画面が出ないため、必ず手動実行で一度承認を済ませておく必要があります。
実行制限エラー(時間・回数)
GASには、実行時間や回数に制限があります。
処理が重くなると、次のようなエラーが発生します。
- 実行時間の上限を超えました
- Service invoked too many times
これらは「処理が長すぎる」「APIを呼びすぎている」ことが原因です。
一度に大量のデータを処理している場合によく起きます。
対処方法としては、以下が基本になります。
- 処理対象を分割する
- getValues / setValues を使って一括処理する
- 不要なログ出力を減らす
特にスプレッドシート操作では、「1セルずつ処理しない」意識が重要です。
型エラー・undefinedエラー
次によく出るのが、型や値に関するエラーです。
代表例としては次のようなメッセージがあります。
- Cannot read properties of undefined
- xxx is not a function
これらの多くは、「想定していない値が入っている」ことが原因です。
変数がundefinedだったり、配列だと思っていたものが実はnullだったりします。
対処の第一歩は、Logger.logで値と型を確認することです。
前回の記事で紹介したように、JSON.stringifyも活用すると原因を特定しやすくなります。
スプレッドシート操作のエラー
スプレッドシート操作では、「存在しないもの」を指定してエラーになるケースが非常に多いです。
- シート名の指定ミス
- 存在しない範囲へのアクセス
- 取得した値が想定と違う
例えば、シート名が1文字違うだけでエラーになります。
見た目では気づきにくいため、ログでシート名を出力して確認すると効果的です。
また、getRangeで取得した値が「2次元配列」であることを忘れてエラーになるケースも頻出です。
配列構造を意識して扱うことが重要になります。
トリガー関連のエラー
トリガーを使った自動実行では、「手動実行では動くのに、トリガーだと動かない」問題がよく起きます。
この場合、次の点を確認してください。
- 権限承認が済んでいるか
- トリガーの種類(時間・onEditなど)が正しいか
- トリガー実行で使えない処理をしていないか
特に、UI操作(ダイアログ表示など)はトリガー実行では使えません。
トリガー用の処理は、裏側で完結する設計が必要です。
エラー対応の基本的な考え方
GASのエラー対応で大切なのは、「いきなり直そうとしない」ことです。
まずはログとエラーメッセージを落ち着いて確認します。
次に、「これは権限系か?処理量か?型か?」と原因の分類を行います。
この分類ができるようになると、調査時間が大幅に短縮されます。
エラーは悪いものではなく、「改善ポイントを教えてくれるサイン」です。
ログとセットで向き合うことで、GASの理解は一段深まります。
まとめ
この記事では、GASでよくあるエラーを原因別に整理しました。
権限・実行制限・型・トリガーといったパターンを知っておくことで、落ち着いて対処できるようになります。
次回は、GASトリガーの基本について解説します。
自動実行を正しく扱えるようになると、GASの実用性が一気に高まります。
0 件のコメント:
コメントを投稿