Googleフォームで自動返信メールを送る時の設定プログラム

ここでは、Googleフォームから自動返信メールを送る時に必要な、Google Apps Scriptの説明をします。
この記事の親記事はこちらから参照ください。

上に説明分があり、下に該当のプログラムがあるような流れで説明していきます。

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

“”の中がメールの標題になります。””を消さないように中を編集します。

// 件名、本文、フッター
var subject = "【お問い合わせ】お問い合わせ完了通知メール"; 

ここが本文の最初の部分になります。プログラムが最後まで実行されると、この上に「お名前 様」という文字が入ります。
ちなみに\nというのが改行です。\n\nであれば、改行2回(=一行あける)ですね。
「+」は文字列の連結を意味します。次の行につなげるという意味ですね。
なので、本文の出だしを編集する場合は、ここを修正します。1行足す場合は「+」から「”」までをコピーして次行に貼りつけます。

var body
    = "この度は、お問い合わせいただきましてありがとうございます。\n\n"
    + "以下の内容にてお問い合わせいただきましたのでご連絡いたします。\n"
    + "---------------------------------------------------------------------------------\n";

ここが、本文最後の部分になります。署名などをここで設定してください。
自動で送信されるメールなので、間違って別の人のメールアドレスをフォームに入力してしまった場合は、このメールが全然関係ない人に送信されてしまいます。
その可能性を踏まえ「このメールに心当たりがない場合、・・・」の文言はあった方がいいと思います。

var footer
    = "---------------------------------------------------------------------------------\n\n"
    + "何かご不明な点がございましたら、\n"
    + "本メールへの返信にてご連絡をお願い致します。\n\n"
 + "====================================================\n"
+ "  安藤 昭太\n"
+ "〒000-0000\n"
+ "東京都中央区中央1-1-1 第一ビル\n"
+ "TEL:03-3000-0000 FAX:03-3000-0001\n"
+ "====================================================\n"
    + "====================================================\n"
    + "このメールに心当たりがない場合、\n"
    + "どなたかが誤って貴方様のメールアドレスを登録された可能性がございます。\n\n"
    + "大変お手数ですが、このメールの中身を消さず、\n"
    + "「このメールに心当たりがない」旨を最上部に記してご返信ください。\n"
    + "登録内容を削除させていただきます。\n"
    + "====================================================\n";

ここが重要です!ここでは、項目名(どの列が何のデータであるか)を指定します。
例えば、NAME_COL_NAMEには名前をしている列の、項目名を入れます。例えば「お名前」ですね。
MAIL_COL_NAMEにはメールアドレス欄の項目名を、TIMESTAML_LABELには送信時刻の項目名を記述します。

// 入力カラム名の指定
var NAME_COL_NAME = 'お名前';
var MAIL_COL_NAME = 'メールアドレス';
var TIMESTAMP_LABEL = 'タイムスタンプ';

「admin」の””の中には、送信者のメールアドレスを設定します。このプログラムを登録する方のGmailアカウントを設定します。
「cc」と「bcc」にはそれぞれ必要に応じてメールアドレスを入力します。
「to」にはプログラムにより、上のMAIL_COL_NAMEに入ってくる送信先メールアドレスが自動的に入力されますので、ここでは何も設定しません。

// メール送信先
var admin = "test@gmail.com"; // 管理者(必須)
var cc    = "";    // Cc:
var bcc   = admin + ",test@test.com"; // Bcc:
var reply = admin; // Reply-To:
var to    = "";    // To: (入力者のアドレスが自動で入ります)
 
//------------------------------------------------------------
// 設定エリアここまで
//------------------------------------------------------------

ここは何も変更を加えません。フォームから入力されたデータを1行取得する処理行です。

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(); // 入力値

ここは、「お名前」欄に入ってきた名前を「○○様」と加工し、本文最初に追加します。「○○さま」としたい場合はここを変更します。

if ( col_name === NAME_COL_NAME ) {  //メール本文の最初に名前を入れる
    body = col_value+" 様\n\n"+body;
}

ここは、送信先のメールアドレスを設定しています。変更はしないでください。

if ( col_name === MAIL_COL_NAME ) {  //メールアドレス
    to = col_value;
}

ここは、タイムスタンプという表示を「申込日時」に変更しています。

if ( col_name === TIMESTAMP_LABEL ) { //タイムスタンプ⇒申込日時
     col_name = '申込日時';
 }

ここは、入力された全データを本文に追加していく処理です。変更の必要はありません。

    body += "【"+col_name+"】\n";
    body += col_value + "\n\n";
}

最後に、本文冒頭部分(body)と本文最後部(footer)を連結しています。

body += footer;

ここではGoogle関数に送信先情報を設定しています。変更不可です。

// 送信先オプション
var options = {};
if ( cc )    options.cc      = cc;
if ( bcc )   options.bcc     = bcc;
if ( reply ) options.replyTo = reply;

最後にGoogle関数を使ってメールを送信する処理です。送信中にエラーが発生すると送信元にメールが送信されるようになっています。

    // メール送信
    if ( to ) {
        MailApp.sendEmail(to, subject, body, options);
    }else{
        MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body);
    }
}catch(e){
    MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message);
}

以上、自動返信メールを送る時にプログラムの説明でした。

ノウハウ

メールマガジンにご登録お願いします。



ITに関するお困りごとがあれば、お問い合わせください!
ITツールが決まっていなくても、導入が決まっていなくても構いません。ぜひ一度そのお悩みや課題をお聞かせ下さい。
NPTechナビをフォローする
この記事を書いた人
安藤昭太

株式会社カルミナ代表取締役。テクノロジーをこよなく愛するエンジニア。

コンピューターが好きで、人と話すのも好き。現代のテクノロジーで社会課題を解決したいと誰よりも思い、カルミナを立ち上げる。

海外旅行と食べることが大好きな一児の父。

NPTechナビをフォローする
NPTechナビ