スプレッドシートの一覧をもとにメールを送信する

準備するスプレッドシート

シート:LISTのE列の値が”1″の人に対してメールを送信します。
メールのテンプレートはシート:TEMPLATEにあり、文面の{NAME}をA列の氏名に、F列を{PLACE}に置き換えて送信します。
TeamAの人にはTeamAより、TeamBの人にはTeamBよりの文面を送信します。

GAS

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var listSheet = ss.getSheetByName("LIST");
  var templateSheet = ss.getSheetByName("TEMPLATE");
  
  var dataRange = listSheet.getDataRange();
  var dataValues = dataRange.getValues();
  
  // シート「TEMPLATE」からテンプレート文、件名、送信元の名前、メールアドレス、返信先メールアドレス、CC、Bccを取得
  var templateA = templateSheet.getRange("A9").getValue();
  var templateB = templateSheet.getRange("B9").getValue();
  var subject = templateSheet.getRange("B1").getValue();
  var senderName = templateSheet.getRange("B2").getValue();
  var fromEmail = templateSheet.getRange("B3").getValue();
  var replyTo = templateSheet.getRange("B4").getValue();
  var cc = templateSheet.getRange("B5").getValue();
  var bcc = templateSheet.getRange("B6").getValue();
  
  for (var i = 1; i < dataValues.length; i++) { // ヘッダー行をスキップ
    var memberID = dataValues[i][0];
    var memberName = dataValues[i][1];
    var mailAddress = dataValues[i][2];
    var group = dataValues[i][3];
    var check = dataValues[i][4];
    var place = dataValues[i][5]; // 新しい「PLACE」列
    
    if (check == 1) {
      var template = (group == "TeamA") ? templateA : templateB;
      var message = template.replace("{Name}", memberName).replace("{PLACE}", place);
      
      // メール送信
      MailApp.sendEmail({
        to: mailAddress,
        cc: cc,
        bcc: bcc,
        replyTo: replyTo,
        subject: subject,
        body: message,
        name: senderName,
        from: fromEmail
      });
    }
  }
}

送信結果