見出し画像

(まもなく記事公開終了します)GAS Sample_スプレッドシート上で宛先を選択しメール送信(その2)

※新しい記事にリライトしました。本記事は間もなく公開終了いたします。
今後はこちらの記事をご参照ください。


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

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

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

画像1

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

画像2

スクリプトはこちら。
「メール送信」「下書き作成」のメニューも実装しています。

function sendMail(){
 
 //スプレッドシート、および各シートを取得
 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 + ',';
   }
 }
 //  メール送信  
 GmailApp.sendEmail(recipient, subject, body, {cc:cc, bcc:bcc});
}

function createDraft(){
 
 //スプレッドシート、および各シートを取得
 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 + ',';
   }
 }
 //下書き  
 GmailApp.createDraft(recipient, subject, body, {cc:cc, bcc:bcc});
}

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

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

※続きの記事を書きました



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