スプレッドシートからメール_宛先を選択[GAS]
(以前の記事をリライトし新しい記事として公開しております。以前の記事は非公開にする予定です)
以前、GASを用いてGoogleスプレッドシートからメールを作成する記事を書きました。
マガジンにまとめてあるので宜しければご高覧ください。
これらの記事をベースに、さらに一歩進めた活用例をご紹介します。
スプレッドシートにメアドリストを用意して、列A「送信対象」のチェックボックスをオンにした人にだけメールを送信する仕組みを構築します。
自分が所属している部署内に、定期的に同じ(似たような)メールを送ることなどを想定しています。
シート[list]を作成し、以下のようなメアドリストを用意します。
シート[mail]にはメール件名、本文、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();
}
スプレッドシートを再読み込みするとメニューに「スクリプト」が表示され、「メール送信」「下書き作成」を実行することが出来ます。
「メール送信」は操作ミスによる誤送信を防ぐために、ダイアログ表示を実装しています。
送信先をチェックボックスで選択し、メール件名や本文を使いまわして送信するこのツール、かなりの手間を省くことが出来てとてもおススメです。
※続きの記事を書きました。