
こんにちは!
タダケン(@tadaken3)です。
「自動返信機能付きお問い合わせフォーム」を作ってみようシリーズの第二弾です。前回はフォームの入力画面とスプレッドシートの連携部分を作成しました。
今回は、スプレッドシート側のGoogle Apps Scriptで、自動返信機能を作っていきましょう。Google Apps Scriptでは、フォームの送信やセルの編集、タイマー設定などをトリガーにスクリプトを実行することができます。フォームの送信をトリガーにして、お問い合わせフォームに登録されたメールに対して、登録内容の自動返信する機能を作っていきます。
自動返信メールがあることで、お問合わせをしてくた人に対して、きちんと登録が完了したことをお伝えすることができます。
フォームからスプレッドシートに入力された情報を取得する
フォームから入力されたデータはスプレッドシートの最終行に追加されていきます。なので、最終行のデータからメールアドレスやお名前などの登録情報取得していきましょう。

Google Apps Scriptでアクティブなシートを取得するには、SpreadsheetAppにgetActiveSheetメソッドを実行します。
書き方は
です。
登録情報を取得するには、getRangeメソッドとgetValueメソッドを使います。sheetオブジェクトに対して、getRangeメソッドで行・列の位置を指定してgetValueメソッドでセルの値を取得します。
このように書きます。
データは最終行に追加されるので、最終行の情報も取得しましょう。シートの最終行はgetLastRowメソッドで取得します。
書き方は
です。
getLastRowメソッドでの値をrowという変数にいれておきます。
実際のコードはこのようになります。
function autoReply() {
var sheet = SpreadsheetApp.getActiveSheet();//スプレッドシートを取得
var row = sheet.getLastRow();//最終行を取得
var name = sheet.getRange(row, 2).getValue();//2列目、最終行のセルの値を取得。つまりお名前欄のデータを取得します。
var mail = sheet.getRange(row, 3).getValue();//以下同様に、必要なデータを取得します。
var item = sheet.getRange(row, 4).getValue();
var contents = sheet.getRange(row, 5).getValue();
取得した内容をもとにメール文面を作成する
今回は取得した内容を元にメール文案を作成してきましょう。
「\n」は改行になります。
メールを送信するにはGmailAppにsendEmailメソッドを実行します。
書き方は
です。
メール送信について、詳しく知りたい場合は以下の記事も参考にしてみてください。
function autoReply() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow();
var name = sheet.getRange(row, 2).getValue();
var mail = sheet.getRange(row, 3).getValue();
var item = sheet.getRange(row, 4).getValue();
var contents = sheet.getRange(row, 5).getValue();
var title = "お問い合わせありがとうございます。";//メールタイトル
//メール本文を作成
var mail_body
= "お問い合わせありがとうございます。\n"
+"下記のとおりお問い合わせを受け付けました。\n\n"
+ "--------------------------------------\n"
+ "○お名前\n"
+ name + "\n\n"
+ "○ご連絡先メールアドレス\n"
+ mail + "\n\n"
+ "○お問い合わせ項目\n"
+ item + "\n\n"
+ "○お問い合わせ内容\n"
+ contents + "\n\n"
+ "---------------------------------------\n\n"
+ "確認後、返信させていただきます";
GmailApp.sendEmail(mail,title,mail_body);//メール送信
実行するとフォームで入力されたメールアドレスに対して、以下のメールが送られます。

フォーム送信をトリガーに設定する
では、スクリプトの実行をフォームの送信と紐付けていきます。
トリガー設定するには、メニューバーにある時計マークをクリックします。

autoReplyファンクションを選んで、イベントを「スプレッドシートから」「フォーム送信時」に変更しましょう。

これで、フォーム送信をトリガーにメールが自動で返信されます。
フォームに入力して試してみてください。
まとめ
Google Apps Scriptでフォーム送信をトリガーに自動返信する機能を実装しました。
今回は
- スプレッドシートからセルの値の取得方法
- Google Apps Scriptでのメール送信する方法
- 「フォームの送信」をトリガーにスクリプトを起動する法
を実行する方法を学びましたね。ひとつひとつは、基本的な内容ではあるのですが、これらを組み合わせることで、様々機能を実装することができようになります。ぜひ、あなたなりの機能開発にもチャレンジしてみください。
次回は、問い合わせがあったらチャットワークに通知する機能を実装してきましょう。
どうぞ、お楽しみに!

