2011年6月14日火曜日

Googleフォームへの投稿内容をメールで送信する方法を調べてみた



問い合わせフォームにGoogleフォームを使っている場合などに参考になるかも。



まず始めにに、Googleドキュメントには内容の変更を通知する機能があるので、フォームに投稿があったことを通知することは可能です。



それは、こちらなどを参考に。
http://www.google.com/support/forum/p/docs/thread?tid=5ad9cb30c155d48d&hl=ja



さて、本題の投稿内容自体を送信する方法ですが、公開されているGoogle Appsスクリプトを使います。
http://www.steegle.com/websites/google-sites-howtos/apps-script-contact-us-form-email



こちらのサイトに導入方法が書いてますが、英語なので日本語に訳して、少し加筆しました。



スプレッドシートの編集画面で操作を行います。


1. [ツール]→[スクリプト ギャラリー]をクリック


2. 「Contact Us Form Mailer」で検索して、[インストール]をクリック


3. 次の画面で、左下の[Aithorize]をクリック。


4. [スクリプト ギャラリー]のウィンドウは閉じる


5. [ツール]→[スクリプト エディター]を開く


6. 以下の「var recipient = "";」 の箇所の「" "」の間に、メールアドレスを入れて、[保存]ボタンを押す。これが送信先のアドレスとなるので、複数アドレスに送りたい場合は、「半角カンマ+スペース」で区切って挿入します

var recipient = "";


7. [トリガー]→[Current script's triggers]をクリック


8. 「No triggers set up. Click here to add one now」のリンクをクリック


9. 一番右側のプルダウンで[On form submit]を選択。さらに、右側の「notifications」をクリック。メール経由→「今すぐ」に設定して[OK]。元のダイアログで[Save]をクリック。


10. スクリプトエディターを閉じる。スプレッドシートを保存。



以上です。ですが、このスクリプトは、1問目が名前、2問目がメールアドレス、3問目がメッセージ、という想定で作られているので、下図の赤枠で囲んだ部分をフォームの設問にしたがってカスタマイズする必要があります。



例えば、次のようなフォーム用にカスタマイズしてみます。
サンプルフォーム


var timestamp = e.values[0];
var name = e.values[1];
var company = e.values[2];
var status = e.values[3];
var tel = e.values[4];
var adress = e.values[5];
var email = e.values[6];
var subject = e.values[7];
var message = e.values[8];
var body = name+' <'+email+'> sent the following message: '+message;
var bodyHTML1 = '<p>'+name+' <a href="mailto:'+email+'">'+email+'</a> 様のお問い合わせ: </p>';
var bodyHTML2 = '<p>企業名: '+company+' 役職: '+status+'</p>';
var bodyHTML3 = '<p>tel: '+tel+' 住所: '+adress+' 件名: '+subject+'</p>';
var bodyHTML4 = '<p>'+message+'</p>';
var advancedArgs = {htmlBody:bodyHTML1+bodyHTML2+bodyHTML3+bodyHTML4 , replyTo:email};


「e.values[0~8]」というのが、各設問の投稿内容なので、それを並べています。これで、メールでフォームの投稿内容が送られてくるはずです。