libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

FormAppによるフォームの集計と作成 (2/5)

作成:2013-06-23 09:35
更新:2013-06-23 09:35

■フォームの回答を集計する

FormAppで扱えるものは、大きく整理すると「回答」と「フォーム本体」に分かれるでしょう。まずは、回答に関するものについて説明をします。

フォームの回答は、フォームの回答全体と、個々の回答を扱うオブジェクトが組み合わせられて構成されています。それらの構造を理解しながら、どうやって回答の情報までたどり着くか、を頭に入れて置かなければいけません。では順に整理しましょう。


・FormResponse
フォーム全体の回答情報は、FormResposeというオブジェクトでまとめられています。これは1つ1つの回答をまとめたものです。これはFormから「getResponses」メソッドで取得します。
変数 = 《Form》.getResponses();
これにより、FormResponseの配列が取得できます。この配列から順にFormResponseを取り出し処理していきます。


・ItemResponse
FormResponseの中には、1つ1つの質問項目の回答を管理する「ItemResponse」というオブジェクトがまとめられています。これは「getItemResponses」で取得できます。
変数 = 《FormResponse》.getItemResponses();
これで得られるのは、ItemResponseの配列です。ここから順にItemResponseを取り出し、必要な情報を取得します。


■質問・回答の情報の取得
では、取得されるFormResponse/ItemResponseからはどのような情報が得られるのでしょうか。主なものを以下に整理しましょう。


・回答者のメールアドレスの取得
変数 = 《FormResponse》.getRespondentEmail();
フォームでは、Google Appsのユーザーのみ利用できるように設定できます。この場合、投稿したユーザーのメールアドレスを自動的に取得できます。こうして取得されたメールアドレスを取り出します。


・送信日時の取得
変数 = 《FormResponse》.getTimestamp();
その回答が送信された日時を取得します。返値はDateオブジェクトになります。


・質問の取得
変数 = 《ItemResponse》.getItem();
質問項目を扱うItemResponseオブジェクトで、その質問の項目に関するオブジェクト「Item」を取得します。このItemから、質問に関する情報(回答ではない)を取り出せます。


・質問のタイトルの取得
変数 = 《Item》.getTitle();
質問文は、タイトルとしてItemに保管されています。getTitleにより、質問文を文字列で取得できます。


・回答の取得
変数 = 《ItemResponse》.getResponse();
質問の回答は、ItemResponseの「getResponse」で得られます。返されるのは、1つの値のみが設定されるタイプの質問ではString値ですが、複数の選択が可能な質問の場合にはString配列となります。


――これらがひと通りわかれば、回答の集計などはだいたいできるようになるでしょう。例として、フォームの回答をログに出力するサンプルを挙げておきます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function reportForm() {
  var form = FormApp.getActiveForm();
  var formResps = form.getResponses();
  for (var i = 0; i < formResps.length; i++) {
    var formResp = formResps[i];
    Logger.log("★No," + i + ":" + formResp.getRespondentEmail());
    var itemResps = formResp.getItemResponses();
    for (var j = 0; j < itemResps.length; j++) {
      var itemResp = itemResps[j];
      Logger.log(itemResp.getItem().getTitle() +
        " → " + itemResp.getResponse());
    }
  }
}

※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る