Googleフォームの自動送信スクリプトに、急に承認が必要になった話

私が管理しているある団体のWebサイトで、Googleフォームを使用しています。
フォームには、入力完了後に入力内容を整形し私のGMailアカウント宛にメールが届くようなスクリプトが書かれています。

このフォームは、かれこれ2年ほど使用しているのですが、数日前から急にエラー通知が届くようになりました。

今回は、最初の簡単そうなエラーを解決した後に、謎のエラーが出て解決に時間がかかってしまいましたので、同じエラーで悩んでおられる方の参考になればと思って記事を書きました。

最初は、メッセージを見ればわかるエラー

最初に来たエラー通知は、下記のようなものです。

起動 関数 エラー メッセージ トリガー End
16/11/08 21:00 submitForm その操作を実行するには承認が必要です。 formSubmit 16/11/08 21:00

エラーメッセージから、スクリプトの実行に承認が必要になったということのようです。
これまで約2年間は承認なしで動作していましたから、最近になって必要になったのでしょうか?

関数の実行を承認する

Googleにログインし、Googleドライブからフォームを開きます。
「ツール」から「スクリプトエディタ」を開き、エラーが出ている関数「submitForm」を選択します。
そして、おもむろに「▶(実行:右向きの黒い三角)」をクリックすると・・・

「承認が必要です」

というダイアログが表示されました。

「続行」して、「承認する」と進むと、次からは関数を実行しても承認を要求されることは無くなりました。
(フォームから実行していないので関数自体はエラーで止まりますが、今は問題ありません)

エラーメッセージと原因が、全然結びつかないエラー

さてこれで解決と思いきや・・・上記の作業を行った後にテストでフォーム入力を行うと、今度は次のようなエラー通知が来ました。

起動 関数 エラー メッセージ トリガー End
16/11/08 22:00 submitForm

TypeError: undefined のメソッド「getItemResponses」を呼び出せません。
(行 4、ファイル「コード」)

formSubmit 16/11/08 22:00

仕様が変わって「getItemResponses」が使えなくなったということでしょうか?

いや、そんなことはないようです。
つい最近に書かれたと思われるGoogleフォームの記事を見つけたので確認したところ、getItemResponsesメソッドはしっかり使われていました。
しかも、私の使い方と、ほとんど同じです。

実はこちらも原因は同じ

エラーメッセージで検索をかけてみると、ドンピシャの記事を見つけました。

Google FormのGoogle Apps Scriptがエラーを吐く場合の対処 | TeraDas-テラダス

この記事によれば、「トリガー」が削除されているとこのエラーが出るそうです。
トリガーとは、スクリプトを実行するタイミングのことです。

このスクリプトは、フォームの内容が送信されたときに実行されるように設定されています。
このトリガーが、何らかのトラブルで消えてしまっているのが原因なのでしょうか?

そこで、「リソース」-「このプロジェクトのトリガー」から、トリガーを確認してみました。
ところが、トリガーは正しく設定されています。

実行 イベント  
submitForm フォームから フォーム送信時

そこで「もしや」と思い、一度このトリガーを削除して、再度、同じように設定をしてみました。

すると、

「承認が必要です」

というダイアログが表示されました。

私の記憶が正しければ、前回スクリプトを設定したときは、承認は要求されていません。
おそらく、これが原因です。

先ほどと同様に、ダイアログの説明に従ってトリガーも承認をします。
その後、フォーム入力を行うと、問題なくメールが送信されるようになりました。

トラブルに対応できたら情報を共有しましょう

Googleフォームに限らず、Googleのサービスは突然の仕様変更がよく起こります。
そのため、会社や組織で使用している場合は、その仕様変更によってサイトの機能が使えなくなることがないよう、常にチェックしておくことが必要だと思います。

Googleフォームは、スクリプトに問題が起きたときにすぐにアラートメールが送られるように設定できますので、障害が起きたことはすぐに把握できます。

問題はそのあとです。

エラーメッセージに従って対応することで問題が解決すればよいのですが、今回のようにエラーメッセージから本当の原因が想像できないような場合は、自分だけで考えていてもまったく解決できません。

そんなときに頼りになるのが、ネット上の情報です。
しかし、公式サイトやフォーラムでは解決しないことが、実際には多いです。
頼りになるのは、個人ブログのいわゆる「体験談」みたいな記事なのですよね。

今回も、そんな記事に助けられました。
そして、この記事で同じようなことに悩んでいる方の助けになれば幸いです。

Googleフォームの自動送信スクリプトに、急に承認が必要になった話” に対して12件のコメントがあります。

  1. 佐藤 より:

    大変参考になりました。おかげさまでようやく解決出来ました。ありがとうございます。

    1. 川井 昌彦 より:

      コメントありがとうございます。
      ブログを続ける励みになります。

  2. たかし より:

    GAS初心者です。 同様のエラーに陥り、同じようにトリガーの削除、再登録もしてみましたが、解決できません。 違いは再登録をしても承認要求がされないという点です。
    トリガー削除後にスクリプトを保存してクローズし、再度オープンしてから・・という方法もダメ元で試してみたのですが、やはりだめでした。

    1. 川井 昌彦 より:

      この投稿に書いてあるスクリプトは今でも動作しているので、違う原因があるのかもしれませんね。
      私もGASはほぼ初心者なので、有効な解決策を提示できそうになくて申し訳ありません。
      エラーメッセージをダブルクオーテーションで囲んでググると、同じようなことで悩んでいることが他にも見つかるかもしれません。(英語の記事のほうが情報が多いです)
      気づきにくいタイプミスということもありますので、落ち着いて頑張ってください。

  3. Rick より:

    Googleフォームからのメール送信がある日突然不調になる。
    記事を読んで再設定して復旧しました。
    ありがとうございました。

    1. 川井 昌彦 より:

      コメントありがとうございます。
      お力になれてなによりです。

  4. ヤスエ より:

    googleフォームで「フォーム通知」というアドオンが突然エラーになり使えなくなりました。アンケートも数件、自動返信もうまくいっていました。なのに今日自動返信文修正のため開いてみたら、ScriptError: その操作を実行するには承認が必要です。と赤字で出て、先日まで自動返信メールできていたのに使えなくなりました。どうしたら使えるようになりますか?急ぎで焦っています!とても利用価値があり有り難かったのですが…今は困っています(泣)。ちなみにマルチアカウントがだめなのでしょうか???

    1. 川井 昌彦 より:

      「フォーム通知」アドオンは使ったことが無いので適切なアドバイスはできないのですが、複数アカウントでログインしている状態だとダメな気がします。
      一度全部ログアウトしてフォームを作成したアカウントだけログインしなおすか、新しいシークレットウィンドウでログインしてみたらどうでしょうか?

      1. ヤスエ より:

        そのとおりに、いつの間にか複数ログインしていたアカウントをログオフして、該当のアカウントだけにしたら、エラー直りました!!!あきらめなくてよかった…助かりましたありがとうございました!

        1. 川井 昌彦 より:

          良かったです。私も経験が無かったので参考になりました。

          1. ヤスエ より:

            以前お世話になりました、ヤスエです。
            その後、フォーム通知アドオンを選択出来なくなり、パズル型のアイコンからアドオンをみると、フォーム通知はあるのですが、クリックすると、ヘルプしか表示されなくなりました。なので、自動返信修正も出来ず、機能もせず、困っています。。。このアドオン、削除もできないのです。どうしたらよいでしょう?その後、スクリプトを自前で記述して設置しても機能しないのです。。。

          2. 川井 昌彦 より:

            今回も想像でしかお答えできませんが、状況からすると複数アカウントが影響しているような気がします。
            chromeをお使いでしたら「シークレットウィンドウ」を開いてログインしなおすと、アドオンの操作ができるかもしれません。

            あと、そのアドオンですが、使用できなくなっているということはないでしょうか?
            作成者のブログを見てもアドオンのリンク先が見つからなくなっているようです。

            あとは、英語でも良ければこちらのブログで解説されているアドオンのほうが使いやすそうですよ。(ただし無料で使えるのは1つだけのようです)
            https://kanotetsuya.com/email-notifications-for-forms/

コメントを残す