新規でGoogleフォームを作成して送信時にトリガーを設定したときに
TypeError: undefined のメソッド「getItemResponses」を呼び出せません。
または
TypeError: Cannot call method "getItemResponses" of undefined.
というエラーが出たら以下の2つの方法で解決するようです
- FormApp.getActiveForm(); をコードに記述する
- マニフェストファイルにスコープを追加する
参考
https://issuetracker.google.com/issues/118921815
FormApp.getActiveForm(); をコードに記述する場合
コード.gsfunction get_item_responses(e) { FormApp.getActiveForm(); var itemResponses = e.response.getItemResponses(); var result = []; for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); result.push([question, answer]); } Logger.log(result); } | 意訳.gs実行する機能を定義する フォームを取得する 回答を取得して 回答を入れるresulという入れ物を用意して 回答の内容の数(=質問の数)だけ以下を繰り返す 回答をひとつずつ取得して Title(=質問内容)を取得し 回答した内容を取得し resultに入れる それらを配列に入れてログに出す |
ファイル > プロジェクトのプロパティ > スコープ
を見るとスコープに何も入っていない
編集 > プロジェクトのトリガー
を開いて
フォーム送信時にトリガーを設定して保存すると
アカウントの選択を求められて
許可を求められて
https://www.googleapis.com/auth/forms
が スコープに入る
appscript.json(マニフェストファイル)に追加する場合
"oauthScopes": [
"https://www.googleapis.com/auth/forms"
],
を追加して保存後にトリガー設定すると
アクセスの許可を求められるようになります
参考
https://issuetracker.google.com/issues/118921815
https://ja.stackoverflow.com/questions/50010/
https://stackoverflow.com/questions/53377027/