はじめに
今回の記事では、Google Apps Script を使用してGoogle フォームの回答者に自動でお礼などのメールを送信する方法を紹介します。
Google Formsは、アンケートやフィードバックの収集に便利なツールですが、お礼のメールを送信する機能などはデフォルトで提供されていません。今回はGoogle Apps Scriptを使用してその機能を実現します。
- 手動でのお礼メール等の返信作業が不要となり、時間の節約が可能
- 返信を統一することでデータの見落としやミスを減少
- シンプルな作りとすることで、初心者でもカスタマイズが容易
動作イメージ
まずは簡単に今回の自動化処理の動作について説明します。
テストフォームとして、以下のようなフォームを用意します。
フォームには赤枠で囲った様なメールアドレスを入力してもらう回答欄を用意します。
これを回答者に回答してもらい、最後に送信してもらうと回答欄に記載したメールアドレスにお礼メールが届きます。
メールのタイトル、文面は自由に変更可能です。メールの送信元はフォームの作成者のメールアドレスになります。
作成方法
今回の自動化処理の作成には以下が必要となります。
- Googleフォーム
- Google ドキュメント
- Googleスプレッドシート
- Google Apps Script
①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();
}
4行目の数字は、前項「動作イメージ」の「お礼メール_テストフォーム」を例にとると入力する値は「3」となります。
最後に「Ctrl + S」を押すか上部バーにある[プロジェクトを保存]をクリックするとスクリプトが保存されます。
トリガーの作成
次にメールを送信するための引き金となるアクション(トリガー)を作成します。
スクリプトエディタの左部のメニューから「トリガー」(時計のアイコン)をクリックします。
画面下部の「+ トリガーを追加」をクリックします。
実行する関数を[sendThankYouEmail]に設定し、イベントソースをスプレッドシート
から、イベントタイプを[フォーム送信時]
に設定します。
最後に[保存]をクリックします。
最初の関数の実行には権限が必要となるため、[承認が必要です]というモーダルが表示されたら、
[権限を確認]>[表示されているGoogleアカウント(Choose an account)]>[詳細(Advanced)]>[Go to 無題のプロジェクト(unsafe)]>[許可(Allow)]まで移動します。
クリック後トリガーが作成されます。
自動化処理の実行
以上で自動化処理の作成は完了です。あとはGoogleフォームから[送信]で任意の方にフォームを送信し、回答を得ると自動でフォームに入力したメールが届きます。
注意点
GASおすすめ本
GASをもっと勉強したい!ほかにも自分で何か作成したい!という方には以下がおすすめです。