[GAS]簡易メールフォーム

2012/07/05

Googleドキュメントのフォーム機能からGoogle Apps Scriptを使ってメール送信」を参考に、Google Apps Scriptで簡易メールフォームを作成してみた。


function mailUserName(value) {
    return  value + " 様\n\n";
}

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

    //------------------------------------------------------------
    // 設定エリアここから
    //------------------------------------------------------------
    var subject = "[お問い合わせ]"; 
    var body
        = "お問い合わせありがとうございます。\n\n"
        + "------------------------------------------------------------\n";
  
    var footer
        = "------------------------------------------------------------\n\n"
        + "後ほど担当者よりご連絡させていただきます。";

    var COLUMN_TIMESTAMP = "タイムスタンプ";
   var COLUMN_NAME = "氏名";
    var COLUMN_MAIL = "メールアドレス";
  
    // メール送信先
    var admin = "yohei.yoshikawa@gmail.com"; // 管理者(必須)
    var cc    = "";    // Cc:
    var bcc   = admin; // Bcc:
    var reply = admin; // Reply-To:
    var to    = "";    // To: (入力者のアドレスが自動で入ります)


    //------------------------------------------------------------
    // 設定エリアここまで
    //------------------------------------------------------------

    try{
        // スプレッドシートの操作
        var sheet   = SpreadsheetApp.getActiveSheet();
        var rows = sheet.getLastRow();
        var cols = sheet.getLastColumn();
        var range   = sheet.getDataRange();

       Logger.log("cols =" + cols);
        for (var j = 1; j <= cols; j++) {
            var col_name  = range.getCell(1, j).getValue();
            var col_value = range.getCell(rows, j).getValue();
            body += "【"+col_name+"】\n";
            body += col_value + "\n\n";
            
            if (col_name === COLUMN_NAME) {
                body = mailUserName(col_value) + body;
            }
            if ( col_name === COLUMN_MAIL ) {
                to = col_value;
            }
        }
      
        /*
        var timestamp = range.getCell(rows, 1).getValue();
        var last_name  = range.getCell(rows, 3).getValue();
        var first_name  = range.getCell(rows, 5).getValue();
        var last_name_kana  = range.getCell(rows, 2).getValue();
        var first_name_kana  = range.getCell(rows, 4).getValue();
        var to = range.getCell(rows, 6).getValue();
        var content = range.getCell(rows, 7).getValue();
      
        Logger.log("last_name="+last_name);
        Logger.log("first_name="+first_name);
        Logger.log("last_name="+first_name_kana);
        Logger.log("first_name="+first_name_kana);
        Logger.log("to="+to);
        Logger.log("content="+content);

        body += LABEL_TIMESTAMP + "\n";
        body += timestamp + "\n";
        body += LABEL_NAME + "\n";
        body += last_name + " " + first_name + "様\n";
        body += LABEL_CONTENT + "\n";
        body += content + "\n";
        body += footer;
        
        Logger.log("body="+body);
         */
      
        // 送信先オプション
        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);
    } 
}