Googleフォームに自動返信メールを設定する方法と、回答送信先アドレスを変更する方法です。
やり方は難しくありませんが、何か一つでもミスっているとエラーが出て泣きそうになります。
また、コードの羅列を見ていると「私って制作部だったのかな?」と錯覚することが出来ます。
やり方を書いておきますが…
うまくいかなくても私に原因は聞かないでください!
●回答送信先アドレスを変更
※フォームを作成したGoogleアカウントと、回答を知りたい人のアドレスが異なる場合など
- Googleフォームの「設定」タブで「メールアドレスを収集する」をオンにしておく
- 「回答」タブからスプレッドシートのマークを押してスプレッドシートを作成する
- スプレッドシート「拡張機能」から「Apps Script」を選択し、
「エディタ」モードでもともとあるコードを消去し、下記コードを記述
赤文字の部分を適宜変更、下記は来場予約フォームを設定した時の内容例
function onFormSubmit(e) { var recipient = '回答を送りたいメールアドレス'; var subject = '\n《イベント名》来場予約\nに以下の回答がありました。 ※メールの件名'; var items = ['イベント名', '日付', '来場時間', 'お名前', 'ふりがな', '現住所', '電話番号', 'お問い合わせ内容' ※フォームの質問の項目を'この中に'入力、カンマで区切る]; var body = '《イベント名》来場予約」に、以下の回答がありました。 ※メールの本文\n\n'; for (var i = 0, len = items.length, name; i < len; i++) { name = items[i]; body += '【' + name + '】\n' + e.namedValues[name] + '\n\n'; } MailApp.sendEmail(recipient, subject, body); }
- Apps Scriptの一番左から「トリガー」モードに切り替え、右下の「トリガーを追加」を選択
実行する関数 :onFormSubmit
イベントのソース :スプレッドシートから
イベントの種類を選択 :フォームの選択時
エラーの通知設定 :今すぐ通知を送信する
設定を上記に変更し、「保存」 - 完了!テストしてみましょう
●自動返信メールの設定
※単に送信した回答をフォーム回答者に送るだけなら
設定→回答→回答のコピーを回答者に送信をオンにすれば完了
件名や本文をカスタマイズする場合は以下の方法で行う
- Googleフォームの「設定」タブで「メールアドレスを収集する」をオンにしておく
- 「回答」タブからスプレッドシートのマークを押してスプレッドシートを作成する
- スプレッドシート「拡張機能」から「Apps Script」を選択し、
「エディタ」モードでもともとあるコードを消去し、下記コードを記述
赤文字の部分を適宜変更、下記は来場予約フォームを設定した時の内容例
function sendMailGoogleForm() { Logger.log('sendMailGoogleForm() debug start'); //------------------------------------------------------------ // 設定エリアここから //------------------------------------------------------------ // 入力カラム名の指定 var NAME_COL_NAME = '名前'; var MAIL_COL_NAME = 'メールアドレス'; // 件名、本文、フッター var subject = "《イベント名》来場予約を受け付けました"; var body = "この度は\n《イベント名》への来場予約、\n誠にありがとうございます。\n\n後程、改めて弊社担当よりご連絡させていただきます。\n\n\n下記の内容で来場予約を受け付けました。\n\n" +"------------------------------------------------------------\n\n"; var footer = "------------------------------------------------------------\n\n" +"数日経っても連絡がない場合は、大変お手数ですが、\nサイトのお問い合わせフォームより再度お問い合わせください。\n\n本メールは自動配信されております。\nこちらのメールに返信いただいてもご回答いたしかねますので、あらかじめご了承ください。"; // メール送信先 var admin = "管理者のメールアドレス"; // 管理者(必須) var sendername = "管理者の名前";//送信者名(必須) var cc = ""; // Cc: var bcc = admin; // Bcc: var reply = admin; // Reply-To: var to = ""; // To: (入力者のアドレスが自動で入ります) //------------------------------------------------------------ // 設定エリアここまで //------------------------------------------------------------ try{ // スプレッドシートの操作 var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getLastRow(); var cols = sheet.getLastColumn(); var rg = sheet.getDataRange(); Logger.log("rows="+rows+" cols="+cols); // メール件名・本文作成と送信先メールアドレス取得 for (var i = 1; i <= cols; i++ ) { var col_name = rg.getCell(1, i).getValue(); // カラム名 var col_value = rg.getCell(rows, i).getValue(); // 入力値 body += "【"+col_name+"】\n"; body += col_value + "\n\n"; if ( col_name === NAME_COL_NAME ) { body = col_value+" 様\n\n"+body; } if ( col_name === MAIL_COL_NAME ) { to = col_value; } } body += footer; // 送信先オプション var options = {name: sendername}; if ( cc ) options.cc = cc; if ( bcc ) options.bcc = bcc; if ( reply ) options.replyTo = reply; // メール送信 if ( to ) { MailApp.sendEmail(to, subject, body, options); }else{ MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body); } }catch(e){ MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message); } }
- Apps Scriptの一番左から「トリガー」モードに切り替え、右下の「トリガーを追加」を選択実行する関数 :sendMailGoogleForm
イベントのソース :スプレッドシートから
イベントの種類を選択 :フォームの選択時
エラーの通知設定 :今すぐ通知を送信する
設定を上記に変更し、「保存」 - 完了!テストしてみましょう
▼参考
・Googleフォームの回答送信先アドレスを変更する方法
https://mashiolog.com/archives/266
・Googleフォームにオリジナル自動返信メールを設定する方法
https://liapoc.com/new-google-form.html#toc6