SANANEBLOG
GAS PR

Googleフォームの回答者に自動でお礼メールを送信する方法【GAS】

記事内に商品プロモーションを含む場合があります

はじめに

今回の記事では、Google Apps Script を使用してGoogle フォームの回答者に自動でお礼などのメールを送信する方法を紹介します。

Google Formsは、アンケートやフィードバックの収集に便利なツールですが、お礼のメールを送信する機能などはデフォルトで提供されていません。今回はGoogle Apps Scriptを使用してその機能を実現します。

今回の自動化で得られるメリット
  1. 手動でのお礼メール等の返信作業が不要となり、時間の節約が可能
  2. 返信を統一することでデータの見落としやミスを減少
  3. シンプルな作りとすることで、初心者でもカスタマイズが容易

動作イメージ

SANANE

まずは簡単に今回の自動化処理の動作について説明します。

テストフォームとして、以下のようなフォームを用意します。

フォームには赤枠で囲った様なメールアドレスを入力してもらう回答欄を用意します。

これを回答者に回答してもらい、最後に送信してもらうと回答欄に記載したメールアドレスにお礼メールが届きます。

SANANE

メールのタイトル、文面は自由に変更可能です。メールの送信元はフォームの作成者のメールアドレスになります。

作成方法

今回の自動化処理の作成には以下が必要となります。

  • Googleフォーム
  • Google ドキュメント
  • Googleスプレッドシート
  • Google Apps Script
SANANE

①Googleフォームで回答された内容をスプレッドシートに記録

②Googleドキュメントにメール本文を記載

③フォームに回答されたメールアドレスに①と②の内容をもとにメールをGASが送信する、という流れとなります。

Googleドキュメントの操作

まず、お礼メールの本文を作成します。Googleドキュメントにアクセスします。

作成したドキュメントにメールの本文を記載します。

作成したら、後のGoogle Apps Scriptで使用するためのドキュメントIDを控えておきます。

https://docs.google.com/document/d/ここを選択してコピー/edit

ドキュメントIDは上部アドレスバーの[ここを選択してコピー]の部分となります。

Googleフォームの操作

次に、Googleフォームにアクセスします。

すでに作成してあるフォームを選択するか、新規でフォームを作成したら、質問を作成し質問の中にメールアドレスを回答させる質問を追加しておきます。

フォームが完成したら、上部バーの[回答]をクリックします。

フォームはこの時点で質問の順番など確定させておいてください。

作成後に質問の順番などを変更すると自動化処理でエラーの原因となる場合があります。

[スプレッドシートにリンク]をクリックします。

特に指定等なければ[新しいスプレッドシートを作成]からフォームの名前を変更し、[作成]をクリックします。

スプレッドシート・GASの操作

スプレッドシートが自動で開きます。[拡張機能]>[Apps Script]をクリックします。 GASが開きます。

次に、実際にコードを記載していきます。もともと記載してある以下コード

function myFunction() {

}

削除して、新たに下記のコードをコピペしてください。

このとき、2~4行目には以下を入力してください。

  • 2行目の” “内にはメールアドレスの件名
  • 3行目の” “内には先ほど控えておいたGoogleドキュメントのID
  • 4行目の数字には、Googleフォーム内でメールアドレスを回答する質問がフォーム内で何番目の質問かを入力
// 設定部分
var EMAIL_SUBJECT = "お問い合わせありがとうございます"; // 送信するメールのタイトル
var DOC_ID = "YOUR_GOOGLE_DOCUMENT_ID"; // GoogleドキュメントのID
var EMAIL_QUESTION_NUMBER = 3; // メールアドレスを尋ねる質問が何番目の質問か入力

function getDocText(docId) {
    var doc = DocumentApp.openById(docId);
    return doc.getBody().getText();
}

function sendThankYouEmail() {
  // アクティブなSpreadsheetを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 最後の行のデータを取得
  var lastRow = sheet.getLastRow();
  var data = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn()).getValues();
  var email = data[0][EMAIL_QUESTION_NUMBER];  // メールアドレスの位置を動的に参照

  // Googleドキュメントからテキストを取得
  var message = getDocText(DOC_ID);

  // メール送信
  GmailApp.sendEmail(email, EMAIL_SUBJECT, message);
}

function createTrigger() {
  // トリガーを作成: フォームが提出されるたびにsendThankYouEmailを実行
  ScriptApp.newTrigger('sendThankYouEmail')
  .forSpreadsheet(SpreadsheetApp.getActive())
  .onFormSubmit()
  .create();
}

SANANE

4行目の数字は、前項「動作イメージ」の「お礼メール_テストフォーム」を例にとると入力する値は「3」となります。

【参考】4行目の「メールアドレスを回答させている質問」の数字ですが、実際はスプレッドシートの表の左から何番目(0から数えて)の行にメールアドレスが記載されているかを表しています。

インデックスは0から始まり、0にはタイムスタンプの列が入っているため、フォームの質問の順番をそのまま入力するだけで動作するようになっています。

最後に「Ctrl + S」を押すか上部バーにある[プロジェクトを保存]をクリックするとスクリプトが保存されます。

正しく保存ができていないと次のトリガーの作成でエラーが発生します。

トリガーの作成

次にメールを送信するための引き金となるアクション(トリガー)を作成します。

スクリプトエディタの左部のメニューから「トリガー」(時計のアイコン)をクリックします。

画面下部の「+ トリガーを追加」をクリックします。

実行する関数を[sendThankYouEmail]に設定し、イベントソースをスプレッドシートから、イベントタイプを[フォーム送信時]に設定します。

最後に[保存]をクリックします。

最初の関数の実行には権限が必要となるため、[承認が必要です]というモーダルが表示されたら、

[権限を確認]>[表示されているGoogleアカウント(Choose an account)]>[詳細(Advanced)]>[Go to 無題のプロジェクト(unsafe)]>[許可(Allow)]まで移動します。

クリック後トリガーが作成されます。

自動化処理の実行

以上で自動化処理の作成は完了です。あとはGoogleフォームから[送信]で任意の方にフォームを送信し、回答を得ると自動でフォームに入力したメールが届きます。

注意点

お礼メールの送信元はgoogleフォームを作成した人のメールアドレスとなります。一度作成したらテストなどを実行して動作を確認してみてください。

一日あたりのメール送信件数には制限があります。無料のGoogleアカウントの場合、日々の制限がありますので、大量のメール送信を予定している場合は注意が必要です。

GASおすすめ本

GASをもっと勉強したい!ほかにも自分で何か作成したい!という方には以下がおすすめです。