昨日、試行錯誤しながらも、自動送信までいけたので、今日はホームページの問い合わせフォームとか、セミナー申し込みフォーム等への実装を完了。久しぶりのScript作成だったので、苦労したところもありますが、思ったより簡単でした。
せっかくなので、テストしたコンパクト版を公開します。
①Google Apps Scriptの Script Editorを開く
②スプレッドシートで名前付けされた範囲を設定
③Scriptを作成
scriptの内容は以下の通り。
項目名で取得する方法もありますが、セル番号取得しています。
プログラミングは久しぶりなのでスマートではないかも。
※もし、おかしいところがあればコメントください。
function responsemail() {
try{
sh = SpreadsheetApp.getActiveSpreadsheet();
r = sh.getRangeByName("sheetRange");
var s = r.getRowIndex();
var e = r.getLastRow();
var l = r.getColumnIndex();
//設定した範囲の行数を定義(タイトル行含む)
var j = 40 ;
Logger.log([s,e,l]);
for(var i=1; i< e-1 ; i++){
Logger.log([i,r.getCell(i, 1).getValue(),r.getCell(i, 2).getValue()]);
if(r.getCell(i, 1).getValue() == "") break;
if(r.getCell(i, 3).getValue() != "SENT"){
MailApp.sendEmail(r.getCell(i,1).getValue(), "XXXXXXXXXXからの自動返信", "この度はお問い合わせを頂きまして、誠にありがとうございます。\n本メールはXXXXXXXXX株式会社にWebサイトでお問い合わせを頂いた方に自動返信で送信しております。\n\n\n------------ ご送信内容の確認 ------------\n以下の内容が送信されました。"+"\nメールアドレス : "+r.getCell(i, 1).getValue()+"\n電話番号 : "+r.getCell(i, 2).getValue() ,
{cc : "xxxxxxxxx@xxxxxxxx.com"});
r.getCell(i, 3).setValue("SENT");
}
if(e > j-2 ){
//設定した範囲の行数に達したら管理者にメールを送信する
MailApp.sendEmail("xxxxxxxxx@xxxxxxxx.com", "***error*** Range overflow", "スプレッドシートの名前付けされた範囲の行数に達しました。行を拡張してください。 getLastRow="+e);
}
}
}catch(e){
//エラーが発生した場合に管理者にメールを送信する
MailApp.sendEmail("xxxxxxxxx@xxxxxxxx.com", "***error*** Auto Mail Send", "予期しないエラーが発生しました。 message="+e);
}
}
※自動返信が正常実行されると、メール送信ステータスに"SENT"が格納されます。
※ログ確認も組み込んでます。
④メニューTrigger > Current Script's triggers ...を選択
⑤Runに対象scriptを、Eventsに from Spredsheet - On form submitを選択
⑥フォームから入力して送信
⑦スプレッドシートで確認
⑧自動返答メールを確認
※スプレッドシート更新時のメール通知(共有-メール通知の設定)は、解除しました。