Googleフォームで自動返信したい

Googleフォームを使えば、簡単にアンケートやお問い合わせフォームを作成できます。
ですが、フォームに回答して送信したユーザーに対して自動返信する機能は用意されておらず、その場合は自動返信プログラムを自作する必要があります。
回答のコピーを送信することはできますが、「お問い合わせありがとうございます。担当者の方で確認後ご連絡いたしますので...」といったメッセージを添付することはできません。
そこで今回は、メッセージを自由にカスタマイズできる自動返信の作り方について解説していきます。
Googleフォームで自動返信出来ることのメリット

Googleフォームの自動返信でできることはメリットはたくさんあります。
ユーザーがちゃんと送信できているか確認できる
Googleフォームの送信後、フォームの回答が届いたことがわかるメールが送られてきたら、しっかり問い合わせが成功しているということをユーザーが確信することができます。
もし問い合わせが成功してるのかわからないと、同じ問い合わせが何度も来ることになったり、「無視されてるのかな?」とストレスを感じてしまいかねません。
返信を期待しているユーザーの不安を和らげられる
個別返信をしていないことを明記していないGoogleフォームでユーザーが問い合わせをした場合、ユーザーは返信が来ることを期待しています。
ですが、問い合わせ確認メールが届かないと
- 何時頃返信が来るのか
- 問い合わせはちゃんと見られているのだろうか
その不安がエスカレートして、
- 〇〇のサポートは使えない
- 問い合わせをしても無視される
ですが、自動返信メールに「○営業日以内に返信致します」といった記述があれば、ユーザーはその間は下手に急かさずに待ってくれます。
そのため、問い合わせからの自動返信メールは非常に重要なものなのです。
Googleフォームで自動返信する方法
それで早速Googleフォーム自動返信する方法を見ていきましょう。


次に[回答]へと移動し、スプレッドシートを作成します。既存のスプレッドシートを使うこともできますが、新規で作成することをお勧めします。
![作成したスプレッドシートを開き、[ツール]->[スクリプトエディタ]](http://cdn2.aprico-media.com/production/imgs/images/000/043/590/original.png?1573895988)
次に、編集画面右上の「︙」をクリックし、[スクリプトエディタ]を選択します。
ここからプログラミング作業になりますが、プログラミング経験がないと少しむずかしいかもしれません。ですが、出来る限り誰でも出来るような簡単なものにしていますので、プログラミング未経験者も参考にして頑張ってみてください。

初回のみ保存に時間がかかるので、ページをリロードせずに待つようにしてください。

まっさらな状態にしたら以下のコードを貼り付けます。
function sendMailGoogleForm() { Logger.log('sendMailGoogleForm() debug start'); //------------------------------------------------------------ // 設定エリア //------------------------------------------------------------ // 件名、本文、フッター var subject = "[お問い合わせありがとうございます。]"; //複数行入力したい var body = "お問い合わせありがとうございます。\n\n\ 各行の末尾に\を含めます\ 改行したい場合「\n」を記述します\ \ ↑空行のときも「\」を忘れないように。\ "; var footer = "------------------------------------------------------------\n\n\ フッターテキストです。署名などの本文末尾に記述する文章はここに記載しましょう。\ "; // 入力カラム名の指定 var NAME_COL_NAME = "名前"; var MAIL_COL_NAME = "メールアドレス"; // メール送信先 var admin = "example@sample.com"; // 管理者(必須) 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); } }
1文字でも欠けたら正常に動作せずエラーになってしまいます。ですので、1文字も漏れがないようにしっかりコピーするようにしましょう。


次に、Googleフォームが送信されたときに上記プログラムを動作させるためのトリガーを設定します。

クリックすると新しくトリガー設定ページが別タブで開かれます。




一般公開用のGoogle審査を受けていないスクリプトは全てこの警告が表示されるので、個人利用において心配する必要はありません。



これで自動返信メールを使えるGoogleフォームが出来上がりました。
試しに作成したGoogleフォームをプレビューし、自分でGoogleフォームに回答・自動返信の確認してみてください。

必要に応じてメール本文やタイトルなどをカスタマイズするようにしましょう。
自動返信のカスタマイズ
スクリプトの書き方分かっている方であれば大丈夫ですが、全く分からないという方もいるでしょう。
やりたいこと別に修正場所をまとめましたので参考にしてください。

※半角です
件名

メール件名を変更したい場合は、ここのテキストをカスタマイズしましょう。
本文
メール本文は、本文とフッターで分けて記述できるようにしています。

記述ルールについてはサンプルコードに書いていますので、そちらを参考にしてください。
送信元
送信元名がデフォルトでは「自動返信メール」となっています。

Googleフォーム作成者にもメールで通知したい

デフォルトのままでは存在しないメールアドレスに対して送信しているため、Googleフォームで回答されるたびにエラー通知メールが届きます。
ですので、可能な限りサンプル30行目のメールアドレスは、所有している有効なメールアドレスを指定するようにしましょう。
Googleフォームで自動返信を使って問い合わせフォームを作ってみた

実際に作成した自動返信対応Googleフォームがこちらです。
適当に問い合わせるとここで紹介したサンプルコードと同じ自動返信メールが届きます。どういう風に自動返信メールが届くのか試したい方は、こちらのGoogleフォームに適当にお問い合わせください。
まとめ

今回はGoogleフォームを自動返信対応にする方法を紹介しました。
タイムスタンプにも対応しているので、時系列別にメールを並べ替えること可能なはずです。
回答のコピーを送信するだけでは不十分という方は、今回紹介したスクリプトを使って自動返信メールをカスタマイズしてみてください。
慣れるまで少しかかるかもしれませんが、万が一修正するところ間違えて治し方が分からなくなったとしても、再度サンプルコードをコピーして貼り付ければ元に戻せます。
自動返信プログラムで悩んでる方はぜひ参考にしてくださいね。