今回は、Google Apps Script(GAS)を使ってGoogleフォーム回答者のGメールアドレスを取得し、スプレッドシートに反映する方法についてご紹介します。
回答者のメールアドレスを収集する設定
スクリプトを作成する前に、Googleフォームで下記の設定を行います。
Googleフォームの編集画面を開きます。
右上の歯車マークの設定アイコンをクリックします。
[メールアドレスを収集する] の横のチェックボックスをオンにします。
引用:Googleヘルプページ「フォームの回答を表示、管理する」
Googleフォームの回答者のGメールアドレスを取得し、スプレッドシートに反映する
Googleフォームの回答者のGメールアドレスを取得し、スプレッドシートに反映するには下記のサンプル1のようなスクリプトを使用します。
・サンプル1
function myFunction() { var ss_id = ‘[ここにスプレッドシートのIDを記載]’; //スプレッドシートのIDを指定 //フォーム情報取得の取得 var formResponses = form.getResponses(); //Googleフォームの複数の回答を配列で取得 //Googleフォームの回答の数だけ処理を繰り返す var formResponse = formResponses[i]; } sh.getRange(1, 1).setValue(address); } |
また、今回の関数の実行には「スプレッドシートから」「フォーム送信時」のトリガー設定が必要となりますので、トリガーの詳細につきましてはこちらの記事をご覧ください。
それでは上記のサンプル1についてですが、まず、
var ss_id = ‘[ここにスプレッドシートのIDを記載]’;
var sh_name = ‘アンケート集計’;
var sh = SpreadsheetApp.openById(ss_id).getSheetByName(sh_name);
で、IDで指定したスプレッドシートの「アンケート集計」というシートを変数shに代入します。
次に、
var form = FormApp.openById(‘[ここにGoogleフォームのIDを記載]’);
ではIDでGoogleフォームを指定し、
var formResponses = form.getResponses();
で、Googleフォームの複数の回答を配列で取得し、変数formResponsesに代入します。
for (var i = 0; i < formResponses.length; i++) {
}
は、Googleフォームの回答の数だけ処理を繰り返すためのfor文です。
var formResponse = formResponses[i];
var address=formResponse.getRespondentEmail();
で回答者のGメールアドレスを取得して変数addressに代入し、
sh.getRange(1, 1).setValue(address);
で指定したスプレッドシートの「アンケート集計」というシートのセルA1に反映させます。