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

Google Apps Script

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

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

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

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

まず、試してほしいこと

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

まずはネットでエラー内容を検索してみる

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

エラーメッセージをそのまま検索窓に貼り付けて検索してみる

実行ログに出力されたエラーメッセージをそのままコピーして、Google等で検索します。ヒットしたブログ記事や知恵袋などを参考にすると解決できるかと思います。

GASはJavaScriptがベースになっており、JSに関する記事がヒットすることもありますが、GAS独自の原因の場合もあるため、できればGASについて書かれている記事を見たほうが良いです。検索時に、「エラー内容+GAS」のように検索するとGAS関連の記事に絞れます。

何をしてエラーが出ているのかを検索窓に入力してみる

エラーメッセージで検索しても、解決策が見つからない場合があります。そのような場合は、何をしてそのような状況になっているか(API連携をした、ライブラリを使った、等)を検索窓に入力して検索することで答えを見つけられることがあります。

たとえば、以下の例では「”undefined” is not valid JSON」とエラーが出ていますが、このまま検索しても解決できそうな記事は見つかりません。

そこで、何をしようとしてエラーになったのかを検索窓に入力してみます。以下のように、「関数名+エラーメッセージ」で検索してみたり、「dopost エラー」などでもヒットするかと思います。

公式のドキュメントを確認する

公式のドキュメントのリンクは以下になります。

ドキュメントの見方や、リンク一覧についてはこちらの記事でまとめています。

ChatGPTで解決できる場合も!

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

ChatGPT:https://chat.openai.com/

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

どうしても分からない場合は、Yahoo!知恵袋や、teratailなどの掲示板で質問するのもアリかと思います。

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

スクリプトが動かないという場合は、まず初めにデバッグ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関数が動かない場合、いくつか考えられる原因があります。

GASから手動で動かすことはできない

doPost関数は、外部からHTTPリクエストを受けてはじめて実行されます。そのため、GASから実行してもdoPost(e)のeに何も入ってこないため、スクリプトの途中でエラーになります。

なので、doPost関数を実行する場合は、外部からHTTPリクエストを投げる必要があります。実際にリクエストを投げるのが難しい・面倒な場合は、GASのスクリプト内から疑似的にイベントオブジェクトを渡してdoPostを呼ぶ方法で対応できます(詳細はこちらを参照)。

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

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

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

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

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

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

デプロイが終わらない

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

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

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

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

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

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

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

まとめ

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

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

プログラミングはいまだに得意ではないけど、効率化・自動化は大好きなので、今後もGASに関する記事を更新していければと思っています。

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

¥2,860 (2024/06/20 01:07時点 | Amazon調べ)
chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライター、QAエンジニアを経て現在RPAエンジニアとして働いています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

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