Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【コピペでOK!】GASでGoogleフォーム回答者のメールアドレスを取得する方法

Google Apps Script Form

こんにちは!
Yuki (@yukibnb) です。

今回はGoogle Apps Script (GAS) を使ってGoogleフォーム回答者のメールアドレスを取得する方法を紹介します。

回答者にお礼メールを自動送信したい場合に活用できます。

では見ていきましょう!

memo

本記事で紹介する方法と合わせて以下関連記事もご覧頂くと、GASでのGoogleフォームの操作がより一層スムーズになります。

【保存版!】Googleフォームの質問と回答をGASで自在に取り出す方法まとめ
【簡単!】Googleフォーム送信時にGASを自動実行する方法

 

はじめに: Googleフォーム管理画面の設定

本記事で紹介するメールアドレスの取得方法は、Googleフォームを以下のように事前設定していることが前提です。

 

Googleフォーム管理画面右上の歯車アイコンをクリックする

Google Form

Googleフォーム管理画面の右上にある歯車アイコンをクリックします。

するとポップアップが表示されます。

 

[メールアドレスを収集する]にチェックする

Google Form

[メールアドレスを収集する]にチェックし、[保存]をクリックします。

 

管理画面の最上部にメールアドレスの質問が追加される

Google Form

管理画面の最上部にメールアドレスの質問が追加されました。

一つ目の質問よりも上に表示されているのがポイントです。

 

回答者画面の最上部にもメールアドレスの質問が追加される

Google Form

回答者画面にもメールアドレスの質問が追加されていることが分かります。

ここでも一つ目の質問よりも上に表示されています。

このように[メールアドレスを収集する]オプションを使用すると、必ず最上部にメールアドレスの質問が表示され、順番を変更することはできません。

これでGoogleフォームの事前準備は完了しました。

では回答者のメールアドレスを取得するGoogle Apps Script (GAS) を見てみましょう。

 

コピペでOK!Googleフォーム回答者のメールアドレスを取得する方法

≪getRespondentEmail≫ 回答者のメールアドレスを取得する

Google Apps Script Form getRespondentEmail

function submitForm(e){
  let email = e.response.getRespondentEmail();

  /*
  回答者にメール送信などの処理をする
  */
}

回答者のメールアドレスはgetRespondentEmailメソッドで取得できます。

回答者がGoogleフォームから提出した内容はeとして、関数submitFormに渡されます。

このeにはGoogleフォームの回答者が提出した様々な内容が詰まっています。回答済みアンケート用紙が入った封筒のようなものです。

回答者のメールアドレスはこの封筒に記載されている差出人のイメージです。

Google Apps Script Form getRespondentEmail

e.response.getRespondentEmail()と記述することで、封筒 (e) に記載されている差出人 (メールアドレス) を取得します。

そして取得したメールアドレスを変数emailに格納しました。

回答者にお礼メールなどの各種メールを自動送信したい場合、この変数emailを宛先に使用すれば送信できます。

 

[メールアドレスを収集する]オプションを使用しなかった場合

getRespondentEmailメソッドでは取得できません

Google Apps Script Form

[メールアドレスを収集する]オプションを使用せず、自身でメールアドレスに関する質問を作成した場合、getRespondentEmailメソッドではメールアドレスを取得できません。

getRespondentEmailメソッドは厳密には「回答者のメールアドレスを取得する」メソッドではなく、「[メールアドレスを収集する]オプションを利用した回答者のメールアドレスを取得する」メソッドだからです。

[メールアドレスを収集する]オプションを使用しなかった場合、別のメソッドを使用してメールアドレスを取得します。

 

≪getItemResponses≫と≪getResponse≫を使用する

Google Apps Script Form getItemResponses

function submitForm(e){
  let itemResponses = e.response.getItemResponses();
  let email = itemResponses[2].getResponse();

  /*
  回答者にメール送信などの処理をする
  */
}

Googleフォームの回答はgetItemResponsesメソッドとgetResponseメソッドを使用して取得することができます。

まずgetItemResponsesですべての質問と回答を取得し、変数itemResponses に格納します。

今回の例ではメールアドレスの質問は3つ目にあるため、変数itemResponses のインデックス番号2に対してgetResponseメソッドを使用することで3つ目の質問の回答、つまりメールアドレスを取得することができます。

memo

変数itemResponses のインデックス番号は0から始まるため、3つ目の質問のインデックス番号は2です。

メールアドレスが何番目の質問かに応じて変数itemResponses のインデックス番号を変更するだけで簡単にメールアドレスを取得できます。

ヒント

getItemResponsesメソッドを活用すると、メールアドレスだけでなくGoogleフォームの様々な質問や回答を取得することができます。詳しい活用方法は画像付きで詳しく解説した以下記事をご覧ください。
【保存版!】Googleフォームの質問と回答をGASで自在に取り出す方法まとめ

 

まとめ

今回はGoogle Apps Script (GAS) を使ってGoogleフォーム回答者のメールアドレスを取得する方法を紹介しました。

[メールアドレスを収集する]オプションを使用しているかどうかで使用するGASのメソッドが異なるため、ご自身のGoogleフォームの設定にあった方法でメールアドレスを取得してください。

次回もご期待ください!