このページで学ぶこと
・スプレッドシートとGoogleフォームの紐付け
・Googleフォーム回答時に、スプレッドシート側のスクリプトで回答内容を取得する方法
・
スプレッドシートとの紐付け
まず、スプレッドシートでGoogleフォーム(以下フォーム)の回答を受け取るために、
フォームとスプレッドシートとの紐付けを行う必要があります。
フォームの編集画面から「回答」タブを選択して、スプレッドシートアイコンを選択します。
次に「回答先の選択」ダイアログにて、紐付けるスプレッドシートを選択します。
「新規作成」「既存スプレッドシートの選択」が選べるので、状況に応じて使い分けてください。
新規/既存いずれを選択した場合にも、フォームアイコンの付いたシートが作成されればOKです。
初期状態だと1行目に設問内容だけ表示されていて、回答されると2行目以降に回答が追記されていきます。
フォーム送信時トリガーの設定
スプレッドシートのメニューバーのツール > スクリプトエディタよりスクリプトエディタを開きます。
まず、フォームに回答が行われたときに呼び出されるスクリプトを事前に作成しておきます。
以下のコードをコピペして保存しておいてください。
onSubmitForm(e) {
const namedValues = e.namedValues;
console.log(namedValues);
}
左メニューよりトリガーを選択
右下のトリガーを追加を選択
下記内容でトリガーを保存します。
トリガーの設定内容
・イベントのソースを選択 「スプレッドシートから」
・イベントの種類を選択 「フォーム送信時」
以上で紐付いたフォームに回答があった場合に、onFormSubmitが呼び出されるようになります。
回答結果の確認
先ほど記載したコードを再度確認です。
onSubmitForm(e) {
const namedValues = e.namedValues;
console.log(namedValues);
}
{
'日付': [ '2021/03/09' ],
'チェックボックス': [ '選択肢 2, 選択肢 3' ],
'ファイルアップロード': [ '' ],
'タイムスタンプ': [ '2021/07/19 17:56:50' ],
'チェックボックス(グリッド) [2 行目]': [ '1 列目, 3 列目' ],
'ラジオボタン': [ '選択肢1' ],
'選択式(グリッド) [1 行目]': [ '1 列目' ],
'時刻': [ '10:20:00' ],
'チェックボックス(グリッド) [1 行目]': [ '1 列目, 2 列目' ],
'均等メモリ': [ '8' ],
'プルダウン': [ '選択肢 5' ],
'選択式(グリッド) [2 行目]': [ '2 列目' ],
'記述式(短文)': [ '短文を入力しました' ],
'段落(長文)': [ '長文を\n入力\nしました' ],
'チェックボックス(グリッド) [3 行目]': [ '2 列目, 3 列目' ],
'選択式(グリッド) [3 行目]': [ '3 列目' ]
}
回答結果を取得
設問名はObject.keys(e.namedValues)で取得可能です。
function onFormSubmit(e) {
const questions = Object.keys(e.namedValues);
for (let question of questions) {
const answer = e.namedValues[question];
console.log(`【${question}】:${answer}`);
}
}
【均等メモリ】:8
【ファイルアップロード】:
【記述式(短文)】:短文を入力しました
【タイムスタンプ】:2021/07/19 18:13:38
【プルダウン】:選択肢 5
【選択式(グリッド) [1 行目]】:1 列目
【チェックボックス】:選択肢 2, 選択肢 3
【時刻】:10:20:00
【選択式(グリッド) [2 行目]】:2 列目
【日付】:2021/03/09
【チェックボックス(グリッド) [2 行目]】:1 列目, 3 列目
【選択式(グリッド) [3 行目]】:3 列目
【チェックボックス(グリッド) [3 行目]】:2 列目, 3 列目
【チェックボックス(グリッド) [1 行目]】:1 列目, 2 列目
【段落(長文)】:長文を
入力
しました
【ラジオボタン】:選択肢1