[GAS]GASを使用したメール一斉送信

ホーム » GAS » [GAS]GASを使用したメール一斉送信

■このページを読んでわかること・対象者

〇対象者
業務などで同じ内容のメールを、複数の方に手動で送っている方。
一通送るのに2分~3分くらいなのが、全部まとめて1分ほどで送信できます。

〇このページを読んでわかること
実際のGASのコード

■GASを始める前に

[GAS]GAS(GoogleAPI)の始め方を確認して、スプレッドシートを作成しておいてください。
スプレッドシートは下記のような項目を作成してください。


〇メール本文の作成
GASでメールを送る際は、本文をドキュメントにあらかじめ用意しておきます。

ドキュメントを開く

ドキュメントIDのコピーをして、スプレッドシートの「B1」に貼り付けてください。
ドキュメントIDはURLのhttps:~~/d/○○○○/edit
の○○○○の部分になります。


■実際のコード

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];//0枚目のスプレッドシート「0始まり」

function sendMergeEmail(){
  var result = Browser.msgBox("メールを送信します。", Browser.Buttons.OK_CANCEL);
 if (result == "ok"){
  // OKの場合に実行するスクリプトを入れる

 var lastColum = sheet.getLastColumn();
 var lastRow = sheet.getLastRow();
 var startRow = 2;
 var numRows = lastRow - 1;
 var strFrom = "送信元のメールアドレス"; //送信元のメールアドレス 
 var strcc = "cc該当者"; //cc該当者
 var dataRange = sheet.getRange(startRow,1,numRows,2); //データ取得範囲
 var data = dataRange.getValues();
 //var strTo = sheet.getRange(startRow,2) //startrrowの2行目からデータをとる
 var docID = sheet.getRange(1,2).getValue(); //メール本文のドキュメント

 //テンプレートテキストの取得  
 var docTemplate = DocumentApp.openById(docID); //ドキュメントからデータをとる
 var strTemplate = docTemplate.getBody().getText(); //ドキュメントをメールで送る本文に設定する
 
 for (var i = 0; i < data.length; ++i) { //配列の0個めから配列のMaxまで繰り返す
   var row = data[i];
   
   row.rowNumber = i + startRow; //数え始めはstartrowで設定したところが0.0になります
   
   //Result列がブランクであれば処理を実行    
   if (!row[0]) { 
     var result = "";
     
     try
     {
       var strVal1 = row[2]; //変数は1行目の所から取得します
       
       //テンプレートテキスト内の変数を置換
       var strBody = strTemplate.replace("\{VALUE1\}",strVal1).replace("\{VALUE2\}",strVal2).replace("\{VALUE3\}",strVal3);
       
       var strTo = row[2] //宛先行
       var options = {name:"送信元の表示名:"};
       options.cc = strcc;
       options.from = strFrom;
       
       //メール送信実行       
       GmailApp.sendEmail(strTo,"メールタイトル",strBody,options);
       
       result = "送信済み"; 
       result2 = new Date()
     }catch(e){
       result = "Error:" + e;
     }
     
     //実行結果をResult列にセット
     sheet.getRange(row.rowNumber,1).setValue(result); 
   }
 }  
 }
}

■最後に

いかがでしたか
うまく作成できると、一つずつ手動で作成するのが馬鹿らしくなると思います。
最初はコピペでも良いので、少しずつコードの読み書きができるようになりましょう。

コメント

タイトルとURLをコピーしました