以下投稿と関連して記載します。
フォームが更新された時にどのフォームが更新されたか確認する:Googleフォーム - スプレッドシート
目的
Googleフォームの更新された時にフォームと対応したスプレッドシートでGAS処理をしたい。
詳細
フォーム更新をトリガーにonFormSubmit()を呼び、その中で今回フォームに入力された情報を取得する。
利点
getLastRow()を使って最後に書かれた行をスプシから取得する手もあるけど、getLastRowって結構うまくいかない事が多い。
今回の方法の方が処理時間も実装時間も節約できるのでは。
方法
こんな感じ。
function onFormSubmit(e) {
var range = e.range;
var form_name = range.getSheet().getSheetName();
Logger.log("form_name: " + form_name);
//どのフォームが更新されたかを一応確認
if(form_name == "SampleForm"){
//フォームに入力された内容を取得
var itemResponses = e.values;
itemResponses.forEach(function(itemResponse, index){
//各入力内容を処理
Logger.log("No." + index + ": " + itemResponse);
})
}
}
追記
itemResponseの内容は回答した項目が順番で入ってきます。
回答していない項目は飛ばされるので注意してくださいね。
例えばフォームに設定している質問が
質問A, 質問B, 質問C
で、回答が回答A, 回答C
だけのときもありますよね。
Bが入力必須じゃなければ未回答になることもあるので。
そのときのindex, responseは
0: 回答A, 1: 回答C
となるので注意してください。
0: "回答A", 1: "", 2: "回答C"
とかを期待すると事故るので注意です。
「どの質問に対する回答か」を把握したい場合はgetTitle()でどの質問かが分かるのでそっち使いましょう。