見出し画像

スプレッドシートからメール_宛先を選択[GAS]

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

以前、GASを用いてGoogleスプレッドシートからメールを作成する記事を書きました。
マガジンにまとめてあるので宜しければご高覧ください。

これらの記事をベースに、さらに一歩進めた活用例をご紹介します。


スプレッドシートにメアドリストを用意して、列A「送信対象」のチェックボックスをオンにした人にだけメールを送信する仕組みを構築します。
自分が所属している部署内に、定期的に同じ(似たような)メールを送ることなどを想定しています。

<活用例>
・来週の当番のお知らせ
・先週の週報の未提出者へのリマインド
・残業過多メンバーへの注意喚起
などなど...

シート[list]を作成し、以下のようなメアドリストを用意します。

■シート[list]
列A_送信対象(チェックボックス)
列B_氏名
列C_メールアドレス

シート[mail]にはメール件名、本文、Cc/Bccを入力します。

■シート[mail]
セルB1_件名
セルB2_本文
セルB3_Cc
セルB4_Bcc
※Cc/Bccが複数の場合はカンマ区切りで入力

スクリプトはこちら。

function createMailData(doSend) {

  //スプレッドシート、および各シートを取得
  const ss        = SpreadsheetApp.getActiveSpreadsheet();
  const listSheet = ss.getSheetByName('list')
  const mailSheet = ss.getSheetByName('mail')

  //mailSheetのセルB1-B4から件名、本文、Cc、Bccを取得
  const subject = mailSheet.getRange(1, 2).getValue();
  const body    = mailSheet.getRange(2, 2).getValue();
  const cc      = mailSheet.getRange(3, 2).getValue();
  const bcc     = mailSheet.getRange(4, 2).getValue();

  //listSheetの最終行を取得、メアドを格納する変数recipientを準備
  const lastRow = listSheet.getLastRow();
  let recipient = '';

  //listSheetの列Aにチェックが入っていたらメアドを追加
  for (let i = 2; i <= lastRow; i++) {
    if (listSheet.getRange(i, 1).getValue() === true) {
      recipient += listSheet.getRange(i, 3).getValue() + ',';
    }
  }

  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();
}

スプレッドシートを再読み込みするとメニューに「スクリプト」が表示され、「メール送信」「下書き作成」を実行することが出来ます。

「メール送信」は操作ミスによる誤送信を防ぐために、ダイアログ表示を実装しています。

送信先をチェックボックスで選択し、メール件名や本文を使いまわして送信するこのツール、かなりの手間を省くことが出来てとてもおススメです。

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

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