2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

フォームが更新された時に入力内容を取得する

Last updated at Posted at 2019-10-23

以下投稿と関連して記載します。
フォームが更新された時にどのフォームが更新されたか確認する:Googleフォーム - スプレッドシート

目的

Googleフォームの更新された時にフォームと対応したスプレッドシートでGAS処理をしたい。

詳細

フォーム更新をトリガーにonFormSubmit()を呼び、その中で今回フォームに入力された情報を取得する。

利点

getLastRow()を使って最後に書かれた行をスプシから取得する手もあるけど、getLastRowって結構うまくいかない事が多い。
今回の方法の方が処理時間も実装時間も節約できるのでは。

方法

こんな感じ。

sample.gs
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()でどの質問かが分かるのでそっち使いましょう。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?