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

問題はそのあとです。

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です