見出し画像

スプレッドシートからメール_宛先を選択(その2)Cc/Bccも選択[GAS]

(以前の記事をリライトし新しい記事として公開しております。以前の記事は非公開にする予定です)

前回はスプレッドシート上で宛先を選択しメール送信するGASを紹介しました。

今回はその応用として、Cc/Bccも選択できるように構築します。

■シート[list]
列A_To (チェックボックス)
列B_Cc (チェックボックス)
列C_Bcc(チェックボックス)
列D_氏名
列E_メールアドレス

■シート[mail]
セルB1_件名
セルB2_本文

スクリプトはこちら。

function createMailData(doSend){
  
  //スプレッドシート、および各シートを取得
  const ss        = SpreadsheetApp.getActiveSpreadsheet();
  const listSheet = ss.getSheetByName('list')
  const mailSheet = ss.getSheetByName('mail')
  
  //mailSheetのセルB1-B2から件名、本文を取得
  const subject = mailSheet.getRange(1, 2).getValue();
  const body    = mailSheet.getRange(2, 2).getValue();
  
  //listSheetの最終行を取得、メアドを格納する変数recipient,cc,bccを準備
  const lastRow   = listSheet.getLastRow();
  let   recipient = '';
  let   cc        = '';
  let   bcc       = '';
  
  //listSheetの列A-Cにチェックが入っていたらメアドを追加
  for(let i = 2 ;i <= lastRow ; i++){
    const checkTo  = listSheet.getRange(i, 1).getValue();
    const checkCc  = listSheet.getRange(i, 2).getValue();
    const checkBcc = listSheet.getRange(i, 3).getValue();
    const address  = listSheet.getRange(i, 5).getValue();
    
    if(checkTo === true){
      recipient += address + ',';
    }
    if(checkCc === true){
      cc += address + ',';
    }
    if(checkBcc === true){
      bcc += address + ',';
    }
  }
  
  if (doSend) {
    GmailApp.sendEmail(recipient, subject, body, {cc:cc, bcc:bcc}); //送信  
  } else {
    GmailApp.createDraft(recipient, subject, body, {cc:cc, bcc:bcc}); //下書き   
  }
}


function sendMail() {

  //誤操作による誤送信防止のためにダイアログを実装
  const ui  = SpreadsheetApp.getUi();
  const res = ui.alert("メール送信しますか?", ui.ButtonSet.OK_CANCEL);

  if (res === ui.Button.CANCEL) {
    return;
  }
  createMailData(true);
}

function createDraft() {

  createMailData(false);
}

function onOpen(){
  
  SpreadsheetApp.getUi()
  .createMenu('スクリプト')
  .addItem('メール送信', 'sendMail')
  .addItem('下書き作成', 'createDraft')
  .addToUi();
}

メール件名/本文は変わらず、To/Cc/Bccが都度変動するような場合に便利です。

この記事が気に入ったらサポートをしてみませんか?