Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

Google 小技集 技術情報

Googleドキュメントのフォーム機能からGoogle Apps Scriptを使ってメール送信

投稿日:


【2014/12/26:追記】
この記事はGoogleの仕様変更などで内容が古くなっていたため、最新の情報で書き換えました。
リンク先の記事を参照してください。
Googleドライブのフォーム機能からGoogle Apps Scriptを使ってメール自動返信2014年版 [C!]

110328-0003
Googleドキュメントで簡単にWEBフォームを作成できる機能があるのですが、アンケートやお問い合わせフォームなどがすぐに作れるので個人でも仕事でも多様している人が多いのではないでしょうか。このフォーム機能、フォームからの送信内容はドキュメントのスプレッドシート(Excelライクな表)にまとまるのでそれを共有しておけば複数人でも管理することができます。ただ、問題があるとすれば送信内容によってはすぐに返信したいのにメール通知機能がついていないんですね(フォーム機能ができた初期にはメニューにあった気もするのですが…)。そこで、以前は有料アカウントでしか使えなかったGoogle Apps Scriptという機能が無料アカウントでも使えるようになっていたみたいなので、メール送信機能を実装してみようと思います。


110328-0001
まずは、フォームを作成しましょう。「新規登録」から「フォーム」を選びます。
110328-0002
フォームのタイトルや質問内容などを作成します。
直感的に質問タイトルや回答の形式などを選択できます。
110328-0003
テスト用に、「お名前」「メールアドレス」「件名」「内容」の質問を入力してもらうお問い合わせフォームを作りました。
このフォームから送信すると、
110328-0004
このようにスプレッドシートにまとまっていきます。
110328-0005
このスプレッドシートに新しい回答が登録されたらメールを送信するようにしてみましょう。
「ツール」→「スクリプト」→「スクリプトエディタ」を選択
110328-0006
このようなスクリプトエディタ画面になりました。
メールを送信するための関数を登録します。
sendMailFromFormという名前の関数を作成します。以下のソースをコピペして、
メール文や送信先などを自分のものに編集してください。

function sendMailFromForm() {
Logger.log('sendMailFromForm() debug start');
//------------------------------------------------------------
// 設定エリアここから
//------------------------------------------------------------
// 件名、本文、フッター
var subject = "[お問い合わせ]";
var body
= "お問い合わせありがとうございます。\n\n"
+ "------------------------------------------------------------\n";
var footer
= "------------------------------------------------------------\n\n"
+ "後ほど担当者よりご連絡させていただきます。";
// 入力カラム名の指定
var NAME_COL_NAME = 'お名前';
var MAIL_COL_NAME = 'メールアドレス';
var SUBJ_COL_NAME = '件名';
// メール送信先
var admin = "admin@example.com"; // 管理者(必須)
var cc    = "";    // Cc:
var bcc   = admin; // Bcc:
var reply = admin; // Reply-To:
var to    = "";    // 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;
}
if ( col_name === SUBJ_COL_NAME ) {
subject += 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);
}
}

編集が終わったら、フロッピーアイコンを押して保存してください。
110328-0007
今度は、このスクリプトがフォームの送信時に実行されるようにします。
スクリプトエディタの「トリガー」→「Current script’s triggers…」を選択
110328-0008
関数とイベントを選ぶ画面になるので、登録したスクリプト名と、「From spreadsheet」「On Form submit」を選んでOKします。
さて、これで設定は終りです。
このスクリプトでフォームを送信すると以下のようなメールがフォーム登録者自身と、管理者アドレスにBCC:で送信されます。

Subject: [お問い合わせ]てすと6
お名前 様
お問い合わせありがとうございます。
------------------------------------------------------------
【タイムスタンプ】
Mon Mar 28 2011 18:37:37 GMT+0900 (JST)
【お名前】
お名前
【メールアドレス】
test@example.com
【件名】
てすと6
【内容】
あああ
あああ
------------------------------------------------------------
後ほど担当者よりご連絡させていただきます。

もちろん、設定によってユーザーにはメールを送らないようにしたり、複数アドレス宛に送信したりもできますね。
これ、かなり協力なツールになると思います。

-Google, 小技集, 技術情報

執筆者:

関連記事

no image

クロスブラウザ対応は運営者が楽な方法で、なるべく多くの環境に適応できるといいですね

もう寝ようと思ったんですが、せっかくリンクしていただいたので自分の考えを書いてみます。 要約:シンプルなマークアップを元に各ブラウザの実装レベルに応じて、様々なスタイリングをしていく方が楽だし、いろん …

Ffmpegで複数動画を結合して一つの動画に出力

いつも、動画変換においてやりたいことがあってもコマンドを思い出せないFfmpeg。今回もこのごろ良く使うものを自分用のメモを兼ねて記録しておきます。

no image

今度は AirMac Express がお亡くなりになって、FONに苦戦中(泣

少し前から、MacBookを始め身の回りの機器が軒並み調子が悪い状態です。 んで、今度は無線LANルーターとして使っているAirMac Expressの電源が入らなくなっちゃいました>< 3年以上は使 …

Google Analytics の検索エンジン定義と独自の検索エンジンを追加する方法

【2009/09/07:追記】 このページで解説している方法が使えなくなりました。 問題の解説と対応策は下記エントリーをご覧ください。 Google Analytics に独自検索エンジンを追加してい …

Macの定番エディター ミミカキエディット(mi.app)でシフト+スペースで半角スペースを入力する

Macを使い出してから長い間気になっていたことが@941さんのツイートで急に解決してしまって嬉しかったので、久しぶりにブログ書きますw 今ではすっかりMac愛用者なヤガーですが、昔はWindowsユー …

スポンサードリンク

スポンサードリンク