Google Apps Scriptが動かないときに確認すべきこと5選【GAS】

Google Apps Script

Google Apps Script(GAS)のスクリプトを作成していて、

「コピペで動くって書いてあったのに、動かなかった!!!」
「今まで動いてたのに、いきなり動かなくなった・・・」

という事態に直面したことのある方、けっこういらっしゃるのではないでしょうか。ネットの記事には、「コピペで動く!」と書いてあるのに、全然動かない。GASって簡単だと聞いてたのに、意外と大変かも。プログラミング初心者の方はなおさらハードルに感じてしまうかもしれません。

ですが、対処法を知っていれば、うまく動かないという場面に直面しても冷静に対応することができるようになります。これはGASに限ったことではありませんが、プログラミング言語のなかでGASは初心者向けであり、初めてのプログラミングに選ぶ方も多いと思うので、挫折する前に一度読んでおいてほしい内容です。

まず、試してほしいこと

GASが動かない場合に、まず試してみてほしいことは以下になります。

ネットに大抵の答えは載っている

「こんなエラー見たことない!」という場合も、ネットで検索すれば答えが載っていることが多いです。

エラーメッセージが出ている場合は、エラーメッセージをそのまま検索窓に貼り付けて検索すれば良いですし、エラーが出ておらず原因が分からないという場合には、何をしてそのような状況になっているか(API連携をした、ライブラリを使った、等)を検索窓に入力して検索することで、答えを探すことができます。どうしても分からない場合は、Yahoo!知恵袋や、teratailなどの掲示板で質問するのもアリかと思います。

また、ChatGPTを使って解決するという方法も有効です。以下は、ChatGPTに「Google Apps ScriptのdoPost関数が動かない」と質問した際の回答です。

ChatGPTを利用する上での効果的な質問方法については、下記記事にて解説していますので参考にしてみてください。

基本的にはデバッグとログ出力で解決する

スクリプトが動かないという場合は、まず初めにデバッグorログ出力でエラーを探ります。ログは英語で出力されますが、エラーメッセージをそのままGoogle検索や翻訳すれば内容が分かります。以下は、「定数に値を代入しています」とエラーメッセージが出ていますので、constをvarやletに変更すればOKです。

以下の記事でスクリプトのデバッグ方法・実行方法を詳しく解説していますので、あわせてご確認ください。

GASの関数については、公式のリファレンスが参考になります。

最初動いていたのに、いきなり動かなくなった

「最初は動いていたのに、いきなり動かなくなった!」という場合は、以下の原因が考えられます。

プロジェクト内の別ファイルが原因の可能性

プロジェクト内の別のファイルが原因の可能性があります。

上記画像には、「〇〇.gs」」というファイルが3つ作られています。関数が大きくなってきたり、動作確認用として作成したりする場合にファイルを分けることがあるかと思います。

文法的なエラーでない場合、保存できてしまうので気づきにくいです。例えば、定数を複数ファイルで同じ定数名で定義した場合、保存はできますが、実行時にエラーになります。

サービスを追加した場合にエラーになることも

こちらは、GASのエディタ左側にある「サービス」を追加していて、かつ、GCPプロジェクトと連携している場合に起こる現象です。

スプレッドシートAPI、Drive APIなどを追加した際に、GCPプロジェクトと連携させてログ監視をすると、GCP側でAPIの許可がデフォルトではされていないためにエラーとなります。詳しくは以下記事をご参照ください。

追加したライブラリが原因の可能性

これは非常に稀なケースですが、GAS側に問題があることもあります。過去には、V8ランタイム前に作成されたライブラリが、V8ランタイムライブラリがリリースされて以降動かなくなるという事象がありました。

スクリプトを変更していないのにいきなり動かなくなった場合で、ライブラリを使用しているときは、GASの最新情報や、不具合報告などを見てみると良さそうです。

GASの実行制限に引っかかっている可能性

GASのスクリプトには、様々な制約があります。例えば、

  • スクリプトを一度に実行できるのは30個まで
  • 実行時間は最大6分まで
  • メール本文のサイズは200kbまで(無料版)

などです。すべての制約については、以下をご確認ください。

Apps Script リファレンス>Google サービスの割り当て

doPost関数が動かない

doPost関数が動かない場合、いくつか考えられる原因があります。

アクセスできるユーザーが自分のみになっている

doPostを使う場面は、外部アプリとHTTP通信で連携する場合になります。つまり、外部アプリからGASのスクリプトがアクセスできるようにする必要があります。

デプロイ時に、「アクセスできるユーザー」という項目がありますが、ここが「自分のみ」となっているとdoPost関数が動きません。「全員」に変更して再度試してみてください。

doPost関数内のなんらかの処理に失敗している

doPost関数内で何かしらの処理に失敗しているという場合もあります。ただ、doPost関数は、デバッグが出来ず、Console.logでのログ出力もできません。

doPost関数のログを確認する方法については、以下記事にて解説しています。

デプロイが終わらない

「デプロイを読み込んでいます」のまま、ずっと読み込み中になる場合があります。こちらの原因は分かりませんが、スクリプトを保存して再度開き直すとデプロイできるようになります。

それでもデプロイができない場合は、新しくファイルを作成し直して、そこに作ったスクリプトを貼り付けるしかないかなと思います。

トリガーが突然動かなくなった

トリガー(定期実行)が突然動かなくなった場合には、権限の問題やGAS側の問題など、いくつか原因が考えられます。詳しくは以下記事をご参照ください。

ここまで読んだけど解決しない!という場合

ここまでの方法を試してみたけれど、やっぱり動かない。

そのような場合には、本記事のコメント欄か、問い合わせからご質問いただければと思います。ツイッターからでも構いません(ツイッターは下のアイコンからどうぞ!)。

chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライターを経て現在QAエンジニアとして働いています。機械音痴だけど効率化や自動化をこよなく愛しています!ダックスフントとポケモンがすき。

chasoをフォローする

まとめ

今回は、GASのスクリプトが動かないときの対処法について紹介しました。「GASは簡単!」「もはやプログラミング言語でもない!」なんて聞くことがありますが、個人的には立派なプログラミング言語だと思っています。確かにPythonやJavaなどと比較したら、環境構築の必要もなくコード自体も簡単ではありますが、それでも初心者にとっては色々とつまずくところがあると思います。

私も、文系から未経験でSE業界に入ったとき、プログラミングの全てが分からな過ぎて「こんな高度なことできる人間がいるのか・・・」と、自分との差にショックを受けました。自分なんかが飛び込む業界じゃなかった、と何度も思いましたし、今現在も分からないことだらけです。それでも、プログラミングによってめんどくさい業務を効率化できたり、家計簿管理やメールのやりとりを自動化できたり、生活を便利にしてくれていることは確かです。

プログラミングはいまだに得意ではないけど、効率化・自動化は大好きです。なので、今後もプログラミング初心者に近い目線で、ブログを更新していければと思っています。

今後、GASを動かしていてまた気づいた点があれば随時共有します!

¥2,860 (2023/05/31 09:45時点 | Amazon調べ)

コメント

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