久しぶりに技術的な記事を書きます。
イベントの申し込みやアンケートなどでGoogleフォームを利用することがありますよね。
私もブログの問い合わせフォームをGoogleフォームで作っています。
ただ、他のイベントフォームにあるような自動返信メールを、Googleフォームで設定するのって少し大変です。
でも自動返信メールを付けたい!っていうご要望があると思うので、今回そのやり方をお教えします。
前提として、Googleアカウントにログインして、GoogleドライブにGoogleフォームからのデータを入力されたスプレッドシートがあり、実際に利用されているとします。
1.イベントフォームのデータが入力されるスプレッドシートを選択します
(フォームではなくスプレッドシートの方を選択してください)2.「ツール」-「スクリプトエディタ」を選択します
スクリプトエディタとは、Google Apps Scriptというプログラムを設定する場所です。3.初めて設定する場合は、以下のようなメッセージが出ますので「閉じる」を押します
4.以下のコードをコピーします
プログラム言語が分かる方向けですが、Google Apps ScriptはJavaScriptでGoogle関数が扱えるようになったものです。そのため、中身はJavaScriptと同じルールで記載を変更いただけます。
このプログラムの詳細な説明は、こちらから参照ください。
//------------------------------------------------------------ // 設定エリアここから //------------------------------------------------------------ // 件名、本文、フッター var subject = "【お問い合わせ】お問い合わせ完了通知メール"; var body = "この度は、お問い合わせいただきましてありがとうございます。\n\n" + "以下の内容にてお問い合わせいただきましたのでご連絡いたします。\n" + "---------------------------------------------------------------------------------\n"; var footer = "---------------------------------------------------------------------------------\n\n" + "何かご不明な点がございましたら、\n" + "本メールへの返信にてご連絡をお願い致します。\n\n" + "====================================================\n" + " 安藤 昭太\n" + "〒000-0000\n" + "東京都中央区中央1-1-1 第一ビル\n" + "TEL:03-3000-0000 FAX:03-3000-0001\n" + "====================================================\n" + "====================================================\n" + "このメールに心当たりがない場合、\n" + "どなたかが誤って貴方様のメールアドレスを登録された可能性がございます。\n\n" + "大変お手数ですが、このメールの中身を消さず、\n" + "「このメールに心当たりがない」旨を最上部に記してご返信ください。\n" + "登録内容を削除させていただきます。\n" + "====================================================\n"; // 入力カラム名の指定 var NAME_COL_NAME = 'お名前'; var MAIL_COL_NAME = 'メールアドレス'; var TIMESTAMP_LABEL = 'タイムスタンプ'; // メール送信先 var admin = "test@gmail.com"; // 管理者(必須) var cc = ""; // Cc: var bcc = admin + ",test@test.com"; // Bcc: var reply = admin; // Reply-To: var to = ""; // To: (入力者のアドレスが自動で入ります) //------------------------------------------------------------ // 設定エリアここまで //------------------------------------------------------------ try{ // スプレッドシートの操作 var sh = SpreadsheetApp.getActiveSheet(); var rows = sh.getLastRow(); var cols = sh.getLastColumn(); var rg = sh.getDataRange(); Logger.log("rows="+rows+" cols="+cols); // メール件名・本文作成と送信先メールアドレス取得 for (var j = 1; j <= cols; j++ ) { var col_name = rg.getCell(1, j).getValue(); // カラム名 var col_value = rg.getCell(rows, j).getValue(); // 入力値 if ( col_name === NAME_COL_NAME ) { //メール本文の最初に名前を入れる body = col_value+" 様\n\n"+body; } if ( col_name === MAIL_COL_NAME ) { //メールアドレス to = col_value; } if ( col_name === TIMESTAMP_LABEL ) { //タイムスタンプ⇒申込日時 col_name = '申込日時'; } body += "【"+col_name+"】\n"; body += col_value + "\n\n"; } body += footer; // 送信先オプション var options = {}; 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); }
5.コピーした内容を以下のように貼り付け、保存ボタン(フロッピーのアイコン)を押します
function myFunction() { の下に貼りつけます。6.プロジェクト名を入力します(任意の名前でOK)
プロジェクト名はなんでも結構です。このプログラム全体の名前になります。7.「リソース」-「現在のプロジェクトのトリガー」を選択します
トリガーとは、フォームが送信された時に自動的にプログラムが実行されるようにするための設定です。8.「トリガーが設定されていません・・・」を選択します
9.実行「myFunction」、イベント「スプレッドシートから」、「フォーム送信時」を選択し、「通知」ボタンを押します
ここで、スプレッドシートで、フォームが送信された時に、プログラムが実行されるように設定します。10.「メール(・・・)経由」、「今すぐ」を選択し、「OK」ボタンを押します
プログラムが実行された時(=メールが送信された時)にエラーが発生した場合のエラー報告動作を設定します。11.「保存」ボタンを押します
12.「続行」ボタンを押します
自分が作ったプログラムを実行するために、管理者(ユーザー)の承認が必要になります。13.「承認する」ボタンを押します
ここまでで設定は終了しました。
あとは、フォームからテストデータを入力をして、送信してみましょう。
例えば、こんな感じでデータが入力されたします。
そうするとこんな感じでメールが来ます。
データの入力ミス(メールアドレスがないなど)や設定にミスがあった場合、設定した人のアカウントにエラー内容が記載されたメールが送信されます。
その内容を見て、設定を修正してください。