見出し画像

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

前回はTo,Cc,Bccをチェックボックスで選択しメール送信するGASを紹介しました。

今回はチェックボックスではなくプルダウンで選択するよう構築します。

■シート[list]
列A_To,Cc,Bcc (プルダウン)
列B_氏名
列C_メールアドレス

列Aには「To」「Cc」「Bcc」と、送らない人用の「notSend」の4種のプルダウンを用意しました。

■シート[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の値によってTo,Cc,Bcc振分け
  for (let i = 2; i <= lastRow; i++) {
    const flag    = listSheet.getRange(i, 1).getValue();
    const address = listSheet.getRange(i, 3).getValue();

    if (flag === "To") {
      recipient += address + ',';

    } else if (flag === "Cc") {
      cc += address + ',';

    } else if (flag === "Bcc") {
      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();
}

if文 およびelse if文を用いてプルダウンの値を判定し、それぞれTo,Cc,Bccにメアドを振り分けてメールを作成します。

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

いいなと思ったら応援しよう!