Search

  毎日にもっと楽~を! BLOG Tokyo

2013年5月20日

Googleドライブのフォームに自動返信メール機能を追加する

いろんな場面でWEBフォームを使えるようになった昨今はとても便利ですよね。Googleもかつてはドキュメントとかappsとか言ってかなり前から使え、現在は名称を変え、Google Driveとなってさらに使いやすくなっています。

ただちょっと仕事っぽく使いたいなぁといった場合、受付確認メールがもらえるのが通常のサービスと思いますが、デフォルトの機能でGoogle Driveはそれを提供していません。

一般の方は、一般のサイトでそういうメールをもらえるものだから、それがないと不安になります。僕は、それを回避するために、後日データ集計後、メールアドレス欄をメーラーの宛先に直接貼り付けて、メール送信していました。ただ、これでもなんだか不安だという人もいるようです。

今回はネットで検索していたら下記の素晴らしいサイトに「使い方」が出ていましたので、関心のある方は見てください。僕は、今回このサイトのスクリプトを自分用にしたものを解説します。

[参考リンク]
Googleドキュメントのフォーム機能からGoogle Apps Scriptを使ってメール送信
http://creazy.net/2011/03/google_form_mailsend.html

このままコピペで使えますが、入力カラム名は、実際のカラム名に、メール送信先は実際受け取りたいアドレスに変更が必要です。

[メモ]
+入力項目(カラム【】で表示される)については、自動表示なので、設定を修正する必要なし。
+トリガの設定はスプレットシート側で設定。「スプレッドシートから」⇒「フォーム送信時」 2013/12/4 追記
+フォーム上でトリガの設定をしたあと、必ず「保存」すること。
+後からフォームの項目などを変更した場合、うまく動かないことが多いので、フォームを複製し、新規に保存先スプレッドシートを設定しなおすとうまくいく。その場合、トリガなど再設定が必要。2014/5/21時点でも同じ現象を確認。同内容で少し違うメールが複数届くなどのエラーを確認。フォームの複製および保存先スプレッドシートの新規設定を強く推奨。

function sendMailFromForm() {
Logger.log('sendMailFromForm() debug start');

//------------------------------------------------------------
// 設定エリアここから
//------------------------------------------------------------

// 件名、本文、フッター
var subject = "[登録ありがとうございました]";
var body
= "登録ありがとうございました。\n\n"
+ "------------------------------------------------------------\n";
var footer
= "------------------------------------------------------------\n\n"
+ "本件照会先:Blog Tokyo 編集事務局 TEL 03-0000-00xx";

// 入力カラム名の指定
var NAME_COL_NAME = '氏名';//宛先に使う
var MAIL_COL_NAME = '連絡先メールアドレス';// メールアドレスとして使う

// メール送信先
var admin = "adm@blogtokyo.web.ne.jp"; // 管理者(必須)
var cc = ""; // Cc:
var bcc = admin; // Bcc:
var reply = admin; // Reply-To:
var to = MAIL_COL_NAME; // 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(); // 入力値
body += "【"+col_name+"】\n";
body += col_value + "\n\n";
if ( col_name === NAME_COL_NAME ) {
body = col_value+"  様\n\n"+body;
}
if ( col_name === MAIL_COL_NAME ) {
to = col_value;
}
}
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);
}
}



Bookmark and Share


編集長のおすすめの一冊!2010

comments

comment form

(BLOG Tokyo にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form