はじめに
GASでGoogle Formsのフォームに紐づいていないスクリプトで回答を取得するのに詰まったのでメモ。
なお、フォームに紐づいているスクリプトで回答を取得するのはこちらのページが参考になる。
トリガー設定
Google Formsのトリガー設定(公式ドキュメント)に書いてある通り、
下記スクリプトを、紐づけたい関数があるプロジェクトで実行すれば良い。
ScriptApp.newTrigger('<関数名>')
.forForm('<フォームID>')
.onFormSubmit()
.create();
-
関数名
はフォームの回答があった時に実行したい関数の名前 -
フォームID
はフォームのID- フォームの編集画面のURLは
https://docs.google.com/forms/d/<フォームID>/edit
となっている
- フォームの編集画面のURLは
回答取得
2パターンあるが、どっちを使用すべきなのか分からないので両方試してほしい。
パターン1
function onSubmit(e){
Logger.log(e.namedValues['フォームの項目名1'][0]);
Logger.log(e.namedValues['フォームの項目名2'][0]);
}
のようにする。
パターン2
function onSubmit(e){
let items = e.response.getItemResponses();
for (i in items){
Logger.log("title=%s, response=%s", items[i].getItem().getTitle(), items[i].getResponse());
}
}
のようにする。