Google Formを新規作成して
質問1にラジオボタンの選択肢を2つ
質問2に記述式の質問を配置した
こんなフォームがあるとして
質問に回答して送信後
その回答した内容をログに出してみる
ということをやった時のコードです
このリンクから新規Google Formを作成できます
https://docs.google.com/forms/create
スクリプトエディタを開く方法は
こちら
以下のようなコードを書いて
get_item_responsesを実行すると
上のようなログが出ます
これまでに送信されたすべての回答を取得したい場合
オブジェクトでこのように取得したい場合
(※作られるオブジェクトの中身の順番は実行順であるとは限らない)
obj{
1234 = [質問内容1, 回答内容1],
5678 = [質問内容2, 回答内容2]
}
送信時にeで受け取りたい場合
送信時ではなくスクリプトエディタで実行して取得したい場合
オブジェクトでこのように取得したい場合
obj{
1234= {
question: 質問1,
answer: 回答1
},
5678= {
question: 質問2,
answer: 回答2
}
}
送信時にeで受け取りたい場合
送信時ではなくスクリプトエディタで実行して取得したい場合
送信者のEmailアドレスも取得したい場合
フォームの設定で「メールアドレスを収集する」にチェックを入れておく
送信時にeで受け取りたい場合
送信時ではなくスクリプトエディタで実行して取得したい場合
質問1にラジオボタンの選択肢を2つ
質問2に記述式の質問を配置した
こんなフォームがあるとして
質問に回答して送信後
その回答した内容をログに出してみる
このリンクから新規Google Formを作成できます
https://docs.google.com/forms/create
スクリプトエディタを開く方法は
こちら
以下のようなコードを書いて
get_item_responsesを実行すると
上のようなログが出ます
| コード.gs function 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に入れる それらを配列に入れてログに出す | 
これまでに送信されたすべての回答を取得したい場合
| コード.gs function get_form_responses() {
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var all_result = [];
  for (var i = 0; i < formResponses.length; i++) {
    var itemResponses = formResponses[i].getItemResponses();
    var item_result = [];
    for (var j = 0; j < itemResponses.length; j++) {
      var itemResponse = itemResponses[j];
      var question = itemResponse.getItem().getTitle();
      var answer = itemResponse.getResponse();
      item_result.push([question, answer]);
    }
    all_result.push(item_result);
  }
  Logger.log(all_result);
}
 | 意訳.gs 実行する機能を定義する 現在編集しているフォームを取得して すべての回答を取得して フォームに回答されたすべての結果(今回以前もすべて)を入れる入れ物を用意して これまでに回答された数だけ以下を繰り返す これまでに送信された回答を順番に取得する 回答結果を入れる入れ物を用意して 質問の数だけ以下を繰り返す 回答を順番に取得して 回答のTitle(=質問内容)を取得し 回答の内容を取得し それらをitem_resultに入れて all_resultにitem_resultを入れて all_resultをログに出す | 
おまけ
オブジェクトでこのように取得したい場合
(※作られるオブジェクトの中身の順番は実行順であるとは限らない)
obj{
1234 = [質問内容1, 回答内容1],
5678 = [質問内容2, 回答内容2]
}
送信時にeで受け取りたい場合
| コード.gs function get_item_responses(e) {
  FormApp.getActiveForm();
  var itemResponses = e.response.getItemResponses();
  var obj = {};
  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var item_id = itemResponse.getItem().getId();
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    obj[item_id] = [question, answer];
  }
  Logger.log(obj);
} | 
送信時ではなくスクリプトエディタで実行して取得したい場合
| コード.gs function get_latest_response() {
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var len = formResponses.length;
  var formResponse = formResponses[(len-1)];
  var itemResponses = formResponse.getItemResponses();
  var obj = {};
  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    var item_id = itemResponse.getItem().getId();
    obj[item_id] = [question, answer];
  }
  Logger.log(obj);
} | 
おまけ2
オブジェクトでこのように取得したい場合
obj{
1234= {
question: 質問1,
answer: 回答1
},
5678= {
question: 質問2,
answer: 回答2
}
}
送信時にeで受け取りたい場合
| コード.gs function get_item_responses(e) {
  FormApp.getActiveForm();
  var itemResponses = e.response.getItemResponses();
  var obj = {};
  for (var i = 0; i < itemResponses.length; i++) {
    var text = {};
    var itemResponse = itemResponses[i];
    var item_id = itemResponse.getItem().getId();
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    text["question"] = question;
    text["answer"]= answer;
    obj[item_id] = text;
  }
  Logger.log(obj);
} | 
送信時ではなくスクリプトエディタで実行して取得したい場合
| コード.gs function get_latest_response() {
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var len = formResponses.length;
  var formResponse = formResponses[(len-1)];
  var itemResponses = formResponse.getItemResponses();
  var obj = {};
  for (var i = 0; i < itemResponses.length; i++) {
    var text = {};
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    var item_id = itemResponse.getItem().getId();
    text["question"] = question;
    text["answer"]= answer;
    obj[item_id] = text;
  }
  Logger.log(obj);
} | 
おまけ3
送信者のEmailアドレスも取得したい場合
フォームの設定で「メールアドレスを収集する」にチェックを入れておく
送信時にeで受け取りたい場合
| コード.gs function get_item_responses(e) {
  FormApp.getActiveForm();
  var email = e.response.getRespondentEmail();
  Logger.log(email);
} | 
送信時ではなくスクリプトエディタで実行して取得したい場合
| コード.gs function get_latest_response() {
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var len = formResponses.length;
  var formResponse = formResponses[(len-1)];
  var email = formResponse.getRespondentEmail();
  Logger.log(email);
} | 




