GASで簡単!フォームからメールアドレスを取得する方法

GASを使って、Googleフォームからメールアドレスを取得したいんだけど、どうすればいいんだろう?仕組みがよくわからなくて…。
猫男
猫男
catman
catman
catmanがGASを使ってフォームからメールアドレスを取得する方法を伝授しよう。フォーム設定によって2つの方法があるから、それぞれ紹介するぞ。

方法①:フォームの「メールアドレスを収集」を使う場合

Googleフォームの設定で「メールアドレスを自動で収集」にチェックが入っている場合、GASでは非常に簡単にメールアドレスが取得できます。

フォームの設定手順

  • Googleフォームの右上「歯車アイコン」をクリック
  • 「設定」タブで「メールアドレスを収集」にチェックを入れる

GASスクリプト例


function onFormSubmit(e) {
  const email = e.response.getRespondentEmail();
  Logger.log("送信者のメールアドレス: " + email);
}

この方法なら、ユーザーがGoogleアカウントでログインして回答したときのアドレスを取得できます。

方法②:「メールアドレス」項目を自分で作る場合

ログインを必要としないアンケートや、より自由なフォームを作りたいときは、フォームに「メールアドレスを入力してください」といった質問を追加しておきます。

メールアドレスを質問項目から取得するスクリプト


function getEmailsFromResponses() {
  const form = FormApp.openById('YOUR_FORM_ID');
  const responses = form.getResponses();

  responses.forEach(response => {
    const items = response.getItemResponses();
    items.forEach(item => {
      const title = item.getItem().getTitle();
      const answer = item.getResponse();
      if (title.includes("メールアドレス")) {
        Logger.log("入力されたメールアドレス: " + answer);
      }
    });
  });
}

この方法では、質問のタイトルに「メールアドレス」という文字列が含まれているかで判定しています。

メールアドレス取得を自動化する方法

フォームの送信ごとにメールアドレスを自動的に処理したいなら、GASのトリガー機能を活用しましょう。

トリガーの設定方法

  1. GASエディタで「時計アイコン(トリガー)」をクリック
  2. 「トリガーを追加」を選び、関数を選択
  3. イベントタイプに「フォーム送信時」を設定し、保存

まとめ:Googleフォームからメールアドレスを取得する2つの方法

  • フォーム設定でメールアドレスを収集getRespondentEmail() を使う
  • 質問としてメールアドレスを作成 → 回答から抽出する
  • フォーム送信トリガーで自動処理も可能
これでフォームから簡単にメールアドレスが取得できるなんて、すごく便利だ!
猫男
猫男
catman
catman
そうさ、GASを活用すればGoogleフォームの可能性は無限大。どんどん使いこなしていこう!

練習問題

  • GASを使って、フォーム回答から取得したメールアドレスをスプレッドシートに記録するスクリプトを作成してみよう

 

 

解答・解説


function saveEmailsToSheet() {
  const form = FormApp.openById('YOUR_FORM_ID');
  const responses = form.getResponses();
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails');
  sheet.clear(); // 書き直す場合

  responses.forEach((response, index) => {
    const email = response.getRespondentEmail(); // or 回答から抽出する方式もOK
    if (email) {
      sheet.getRange(index + 1, 1).setValue(email);
    }
  });
}

このスクリプトは、すべてのフォーム回答からメールアドレスを取得し、「Emails」シートに1列ずつ書き出します。