トップ «前の日記(2011年06月21日(Tue)) 最新 次の日記(2011年07月04日(Mon))» 編集 RSS feed

shinoのときどき日記


2011年06月22日(Wed)

GoogleDocsのフォームからメールを送信する。

ちょっと必要があって調べた結果、GoogleDocsのフォームからデータ送信時、メールを送信するには二種類の方法があることがわかった。

ひとつは、フォームsubmit時に、データ更新があったことだけをスプレッドシートの所有者にメール送信する方法。これは、該当スプレッドシートの「ツール→通知の設定」で次のような項目があるので、「ユーザがフォームを送信したとき」と「メール その都度」をチェックし保存すれば良い。届くメールにはスプレッドシートのURLも記載されていて便利。

2ab6bf9bbc87904b3e0aca192e1b2eb6.png

もうひとつは、フォームsubmit時に、フォームに登録したデータをメールに記載して、指定したメールアドレスに送信したい場合。これは、該当スプレッドシートにフォームに記入されたデータを読み込みメールに書き込むコードを書いて、イベントと関連づける。参考にしたのは、Google Docsのフォーム投稿者に確認メールを送信する - _development,

手順としては、

  1. メール送信したいフォームのあるスプレッドシートを開く
  2. ツール→「スクリプト エディタ」を起動する
  3. スクリプト エディタ上で、メールを送信するコードを書く
  4. コードを保存する
  5. スクリプト エディタのトリガー→「Current Script's trigars」をクリック
  6. 現在のスクリプトトリガー→「No triggers set up. Click here to add one now.」をクリック
  7. Runに書いたコードのfunction名を指定、Eventsに「On from submit」を指定して保存

スクリプト エディタで拾えるカラムは、アルファベットでないとダメなので、フォーム作成時に、「質問のタイトル」は英語などアルファベットで記入し、捕捉文に日本語のタイトルや説明を入れるという工夫が必要。

わたしが書いたコードサンプル。

function onFormSubmit(e) {
   try {
       var email = e.namedValues["e-mail address"].toString() ;
       var name = e.namedValues["name"].toString() ;
       var subject = e.namedValues["subject"].toString() ;
       var message = e.namedValues["message"].toString() ;
       var msg = "差出人:  " +name + "<"+ email + ">"+"\r\n";
       msg += "題名:  " + subject + "\r\n\r\n";
       msg += "メッセージ本文: \r\n " + message + "\r\n";
       MailApp.sendEmail(email, "[お問い合わせフォーム]"+subject, msg);
   } catch (e) {
       //エラーが発生した場合に管理者にメールを送信する
       MailApp.sendEmail("admin@example.com", "Error report", e.message);
   }
}
Tags: google

トップ «前の日記(2011年06月21日(Tue)) 最新 次の日記(2011年07月04日(Mon))» 編集 RSS feed
2000|03|
2007|01|03|04|05|06|10|12|
2008|01|02|03|04|05|06|07|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|11|12|
2015|01|02|04|05|09|10|12|
2016|01|03|04|05|08|
2017|01|02|04|05|06|07|08|09|10|
2018|05|06|
2019|08|12|
2020|01|03|04|
2021|01|