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を実行すると
上のようなログが出ます
コード.gsfunction 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に入れる それらを配列に入れてログに出す |
これまでに送信されたすべての回答を取得したい場合
コード.gsfunction 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で受け取りたい場合
コード.gsfunction 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); } |
送信時ではなくスクリプトエディタで実行して取得したい場合
コード.gsfunction 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で受け取りたい場合
コード.gsfunction 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); } |
送信時ではなくスクリプトエディタで実行して取得したい場合
コード.gsfunction 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で受け取りたい場合
コード.gsfunction get_item_responses(e) { FormApp.getActiveForm(); var email = e.response.getRespondentEmail(); Logger.log(email); } |
送信時ではなくスクリプトエディタで実行して取得したい場合
コード.gsfunction 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); } |