Google ドキュメントで作成したWEBフォームに問い合わせがあったら、内容をメール送信する機能を追加する

2014年4月25日追記: アップグレードされたGoogle フォームで自分宛てにメール送信するやり方の 記事を書きましたので、そちらを参照していただいたほうが良いかと思います。

Googleドキュメントのスプレッドシートで、簡単に問い合わせフォームを作れる機能があり、片平堂でも使っています。

便利に使わせてもらっているのですが、メール通知機能がいまいちなのが非常に惜しい。

なので、自分はGoogle Apps Scriptで、問い合わせがあったら、その内容を自分宛に送信するスクリプトを書いて、運用しています。


で、せっかくなので、設置の仕方含めて、スクリプトを公開しようと思います。
一応、問い合わせフォーム作成から手順を説明してみました。

手順


Google ドキュメントでフォームを作成します


フォームの内容を追加していきます
今回は、お名前、メールアドレス、内容という項目を持った問い合わせフォームを作成してみます
お名前、メールアドレスは必須項目にしてみました



その他の操作から確認を編集を選択


問い合わせフォームで入力を終え、送信した後に出る画面の確認メッセージを編集します


フォームはこれで完成です。
で、一応標準のメール通知機能もあるのでみてみましょう・・・
ツールの通知ルールを選択


ここで設定すればメール通知が来ますが、フォームで入力された内容は送って来ません


変更が入った場合、ユーザーがフォームを送信した場合、を設定した場合、それぞれ下記のような内容が送られてきます*1

ユーザーが 2012/07/25 15:28〜15:28(日本標準時)に変更を加えました
レコードを挿入しました


ユーザーが 2012/07/25 15:28〜15:28(日本標準時)に変更を加えました
フォームが送信されました


残念な感じなので、やはりメールを送信するスクリプトを設置してみます
ツール→スクリプトエディタ と選択します


空のプロジェクトか、閉じるを選んでください


下記のメール送信するスクリプトを貼り付けます

myFunctionとか消しちゃっていいです

メール送信先などは、適宜設定してください

function sendForm(e){
 
  // 件名、本文
  var subject = "[問い合わせフォームからの問い合わせ]";  //件名
  var body = "問い合わせ内容\n------------------------------------------------------------";  //本文

  // 入力カラム名の指定
  var PRE='\n\n[';
  var AFT=']\n\n';
  var NAME_FORM_NAME = 'お名前'; //フォーム作成時に設定した項目名
  var MAIL_FORM_NAME = 'メールアドレス'; //フォーム作成時に設定した項目名
  var BODY_FORM_NAME = '内容'; //フォーム作成時に設定した項目名
  
  // メール送信先
  var to    = "xxxx@xxxxx.xxx";


  var name = e.namedValues[NAME_FORM_NAME];
  body+=PRE+NAME_FORM_NAME+AFT+name;
  var mailAddress = e.namedValues[MAIL_FORM_NAME];
  body+=PRE+MAIL_FORM_NAME+AFT+mailAddress;
  var content = e.namedValues[BODY_FORM_NAME];
  body+=PRE+BODY_FORM_NAME+AFT+content+"\n";
  MailApp.sendEmail(to, subject, body);   //メールを送信
}


2012/10/13追記: スプレッドシートでいうと、var NAME_FORM_NAME = 'お名前'はB1セルの文字、var MAIL_FORM_NAME = 'メールアドレス'はC1セルの文字、var BODY_FORM_NAME = '内容'はD1セルの文字と同じになっている必要があります。


フォームがsubmitされたら、メール送信スクリプトが実行されるようにトリガーを登録します
なお、トリガーに登録するまえに、このスクリプトのプロジェクトの名前を適当に変更して保存しておく必要があります


現在のスクリプトのトリガーを選ぶとトリガーを登録する画面が表示されます


sendMailをFrom spreadsheetのOn form submitに登録します


メール送信の許可を与えるか聞いてきますのでAuthorizeを選択します


認証されました


フォームを開いて試してみましょう
ライブフォームを開きます


適当に入力してフォームを送信します


確認メッセージが表示されました


無事メールが通知されました


スプレッドシートには問い合わせ内容が挿入されています


あとは設置するだけですね
フォーム→ウェブページにフォームを埋め込みと選択


コピーして任意の場所に設置すれば完了です


自分宛に送信しているだけですが、スクリプトを参考にすれば、問い合わせた相手宛にメールを送信するのも簡単にできるかと思います。


2012/10/13追記:このスクリプトは、フォームからデータが送信されたタイミングでデータを取得しているので、スクリプトエディタからテストをしてもエラーになります。テストする場合は実際の問い合わせフォームからテストするようにしてみてください。

*1:スプレッドシートのURLは貼られています