背景と実施したこと
掲題の通りですが、
Google Formsの回答に自動返信をするためのスクリプトを書きました。
ちなみにMicrosoft FormsとOutlookを使う場合はPower Automateを使ってノーコードで実現できるようです。
それ以外にもZapierというツールを使ってノーコードで済ますこともできます。
※Zapier試した感じだと若干のタイムラグがありそうだったのと、スクリプト書く方が(自分は)楽だったのでGASでの実装を今回採用しました。
参考にした記事
Google フォームで「自動返信メール」を設定する3つの方法&メールが届かない場合の対処法
【GAS】Googleフォームの回答取得から引数eの違いを理解、トリガー実行時のエラー解決方法
概要
- GASのエディターでサジェストされたものをそのまま使ってもNG
- スプレッドシートからGASを作る(Formsのスクリプトではない)
手順
手順は以下です。1~3と5はさほど難しくない&参考記事に載っている通りなので割愛します。
- Formsを用意する。
- 回答をスプシに紐づける。
- スプシからGASを設定する。
- GASの中でスプシの内容を読み取るスクリプトとメール送信する処理を書く
- Formsの回答をトリガーに設定する
4は以下のようなコードになります。
なお、sendEmailに関しては最新の公式リファレンスにあるように使い方にいくつかバリエーションがあります。
function sendReply(e) {
// フォームの回答を取得
const NAME = e.namedValues['名前'][0];
const EMAIL = e.namedValues['メールアドレス'][0];
// 自動返信メール件名
const SUBJECT = '【自動返信】資料請求ありがとうございます。';
const BODY =
NAME + '様\n\n'
+ 'お申込みありがとうございます\n'
+ '2営業日以内にお申込み内容を確認し資料を送付させていただきます。\n'
+ '恐れ入りますが、今しばらくおまちください。\n'
+ 'https:\/\/drive.google.com\/file\/d\/XXXX\/view\?usp=sharing';
// メール送信
MailApp.sendEmail(
EMAIL,
SUBJECT,
BODY
);
}
なお以下はNG例です。大文字のメソッドやクラスがサジェストされることもあるかもですが、これだとNGです。
function sendReply(E) {
// フォームの回答を取得
const NAME = E.NAMEDVALUES['名前'][0];
const EMAIL = E.NAMEDVALUES['メールアドレス'][0];
// 自動返信メール件名
const SUBJECT = '【自動返信】資料請求ありがとうございます。';
const BODY =
NAME + '様\n\n'
+ 'お申込みありがとうございます\n'
+ '2営業日以内にお申込み内容を確認し資料を送付させていただきます。\n'
+ '恐れ入りますが、今しばらくおまちください。\n'
+ 'https:\/\/drive.google.com\/file\/d\/XXXX\/view\?usp=sharing';
// メール送信
MAILAPP.SENDEMAIL(
EMAIL,
SUBJECT,
BODY
);
}
※ちなみにGmailなどの一部のメーラーでは受信側勝手に改行されたりするようです。
そんなときはプレーンテキストではなくhtmlBodyで送ってあげるといいかも。
まとめ(自戒)
ついついネット記事のまま横着してコピペしがちですが、ちゃんと公式リファレンスみて実装しないとだめですね。