last update 2017年5月16日 17:47

Google FormのGoogle Apps Scriptがエラーを吐く場合の対処

当サイトのお問い合わせ機能にはGoogle Formを使っており、フォームに入力された内容をメール送信しているのですが、最近突然エラーを吐くようになってしまったので対処メモ。

内容としては、「apps-scripts-notifications@google.com」から以下のような「エラーの概要」メールが送られてくるようになりました。

google_app_script_error_notification_1_sh

ハマったエラーメッセージの種類としては、以下2つのパターンがあります。

  1. その操作を実行するには承認が必要です。
  2. TypeError: undefined のメソッド「getItemResponses」を呼び出せません。(行 3、ファイル「コード」)

「1」は、エラーメッセージがそっけなくて何行目、というエラー箇所の表示すらありませんでしたが、原因を確認したところ、複数GoogleアカウントでGoogle FormやApps Scriptを編集している際、知らない間にForm作成者の実行権限がなくなってしまっていた場合に起こるようでした。

対処としては、Form作成者のGoogleアカウントでログインしなおしてApps Scriptを編集しようとすると、「承認が必要です」というダイアログが出るので「許可を確認」ボタンを押してやればOKです。
google_app_script_error_notification_7_sh

「2」は、あろうことか、勝手にトリガーが削除されてしまった場合に起こるエラーです。

この場合は、Apps Scriptのエディタから「リソース」メニュー →「現在のプロジェクトのトリガー」を開き、
google_app_script_error_notification_2_sh

新規にトリガーを追加してやる必要があります。
google_app_script_error_notification_3_sh

こんな感じですな。
google_app_script_error_notification_4_sh

ちなみに↑この画面の「通知」から、起動失敗の通知メールの送信時刻の設定も可能です。
google_app_script_error_notification_5_sh

何も触っていない気がするのに勝手に実行権限やトリガーが消えたのも気持ちが悪いのですが、トリガーが消えているのにメソッドは実行されていて、引数であるフォームオブジェクトがUndefinedですというエラーを吐くとか、本当に気持ち悪い以外の何ものでも無いわけですが、とりあえずはこんな感じで対処できました。

ちなみに、Google Apps Script では try-catch 構文を使うことも可能なので、今後、同様のエラーが発生したら、即座にエラーメールを送る。という記述も可能ではあります。

コメントを記入