photo credit: ….Tim via photopin cc
私の愛しいアップルパイへ
Google Docsで提供されている「フォーム」機能は実に便利です。Googleをなでなでしてあげたいくらい便利です。
一点残念なのは、フォームに入力された内容をメールで自動的に送る機能が標準では無い点です。フォームを入力した人や管理者宛てにこういったメールを送れたらなんて便利でしょうか。
そんなあなたの願いを叶えるべく私は今日ここに立っています。ですからGoogleフォームで送信されたフォームの内容を自動通知するスクリプトと設定方法をお教えします
コピペでOK!Googleフォームで送信されたフォームの内容を自動通知するスクリプトと設定方法
▼我がフォームを使うと、フォームが送信されたときに以下のようなメールがフォーム入力者や任意のアドレスに届きます。
それではさっそく設定方法を見ていきましょう。
1.フォームの準備
▼まずは設定したいフォームを作成してください。項目などは自由に追加してもらってOKです。
▼ただ一点だけルールがあって、メールアドレス入力欄のタイトルは「メールアドレス」としてください。ここで入力されたアドレス宛にメールが自動的に届きます。「メール」や「Mail」などにするとフォーム入力者にはメールを自動送信できませんのでご注意ください。
▼余談ですが、「データの検証」を有効にして、「メールアドレス」を指定しておくと、メールアドレスの書式がきちんと入力されているか(@が入っているかなど)チェックしてくれるので設定しておきましょう。
2.自動送信スクリプトの設定
次に自動送信スクリプトを設定していきます。
▼フォームの「ツール」メニューから「スクリプト エディタ」をクリックします。
▼なにやら英語が書いてありますが、全て消してしまいましょう。
▼まっさらになった画面に、以下のコードをコピペしてください。
function onFormSubmit(e){ try{ // fromアドレスはトリガー設定者のアドレスになるので注意 // toが取得できないときは管理者をtoにしてメールを送ります // ★部分はフォームごとに内容を見直ししてください // ▼▼▼初期設定▼▼▼ // メール送信先の設定 var admin = "admin@xxxx.xxx"; //管理者メールアドレス★1 var cc = admin; // Cc:★2 var bcc = ""; // Bcc:★3 var to = ""; // To: (フォーム入力者のアドレスは自動取得されます) // 件名、本文の設定 //改行するには \n を入れてください var subject = "○○へのお申込みを受け付けました"; //件名★4 var header = "jMatsuzakiです。\n\nこの度は○○へお申込みいただき\n誠にありがとうございます。\nお申込みいただいた内容は以下の通りです。\n\n──────────────────────────────────\n\n"; //本文のヘッダー★5 var footer = "──────────────────────────────────\n\nそれでは当日お会いできることを楽しみにしております。"; //本文のフッター★6 var body =""; //本文 // ▼▼▼メール送信処理▼▼▼ var FORM_DATA = e.response.getItemResponses(); body += header; // 入力項目を本文に埋め込む for (var j = 0; j < FORM_DATA.length; j++){ body += "【"+FORM_DATA[j].getItem().getTitle()+"】\n"; body += FORM_DATA[j].getResponse()+"\n\n";; //入力されたメールアドレスをtoに入れる if(FORM_DATA[j].getItem().getTitle() == "メールアドレス" && FORM_DATA[j].getResponse() != ""){ to = FORM_DATA[j].getResponse()+","; } } body += footer; if(to == ""){ to = admin; } MailApp.sendEmail(to, subject, body, {cc: cc, bcc: bcc}); //メールを送信 } catch (e) { //エラーが発生した場合に管理者にメールを送信する MailApp.sendEmail(admin, "Error report", e.message); } }
3.自動送信スクリプトの修正
コピーしたスクリプトにメールの件名など必要情報を入力していきましょう。
▼スクリプト内に「★」と書かれた部分があると思いますが、ここに情報を入力していきます。全部で6箇所ありますので1つ1つ見ていきましょう。
▼まず「★1」に管理者のメールアドレスを入れてください。フォームが送信されたときと、メール送信がエラーになったときにメールが届きます。
▼以下のように、管理者以外にCCを追加したい場合は「★2」に、BCCを追加したい場合は「★3」に追加してください。その際、CCは admin+”,メールアドレス” といった形式で追加します。複数指定したい場合は,(カンマ)で区切ってください。
▼以下のように、件名は「★4」に指定します。「★5」には本文の冒頭に入る文を入れます。「★6」はメールの最後に入る文を入れます。本文については”/n”を入力した位置に改行が入ります。
ちなみに、フォームのメールアドレス欄にメールアドレスが入力されなかった場合には、管理者だけにメールが届きます。
4.トリガーの設定
これでメールを送るスクリプトは完成しましたが、まだフォームが送信されたらメールを飛ばすという設定が終わっていません。どのタイミングでメールを飛ばすかは、トリガーというもので設定します。
▼スクリプトエディタの「リソース」メニューから「現在のプロジェクトのトリガー」をクリックします。
▼「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」をクリックします。
▼トリガーが追加されるので、左から「onFormSubmit」「フォームから」「フォーム送信時」を選択し、「保存」をクリックしましょう。
▼続けて「承認する」をクリックすれば、トリガーの設定が完了します。
なお、このトリガーを追加したユーザーがメールの送信元(fromアドレス)として表示されます。送信元を別のユーザーにしたい場合は、そのユーザーでGoogle Docsにログインし、該当のフォームにトリガーを追加してください。
メールが自動送信されるかテストしてみよう
これで設定は完了です。無事にメールが自動送信されるか確認してみましょう。
▼フォームの作成画面に戻って「ライブ フォームを表示」をクリックします。
▼作成したフォームが作成されるので、メールアドレスを入力して「送信」をクリックしてみましょう。
▼数十秒ほど待って管理者宛のメールを確認してみてください。以下のようなメールが届いているはずです。何故だか分かりませんか?私が手品使いだとでも思いましたか?それともポルターガイストでも起こったのかと腰を抜かしましたか?もしくは、かような魔法使いのような所業を目の当たりにし、私を天使か悪魔かとでも疑っておりますか?しかし非現実のことではありません。形而上学的なことでもありません。このメールは、あなたが今まで私のガイドに従って設定してきた一連のスクリプトが正常に動作したことによって届けられるべくして届けられたのです!
貴下の従順なる下僕 松崎より