特定の都道府県向けのお客様を対象にメールを送信するGoogle Apps Scriptです。
このようなダミーの顧客リストを用意してみました。
指定された「都道府県」列を参照します。
お客様に送るメール本文を用意します。
%%family_name%%には、スプレッドシートから取得した「姓」に置き換えられます。
差出人(メールの表示名)や件名も編集しておきます。
CCとBCCは空欄でも構いません。
準備ができたらスクリプトを起動します。
スプレッドシートの上部に「メール送信」のメニューがあります。
都道府県を入力するボックスが表示されるので、対象の都道府県を入力してください。受け付けられるのは1つだけです。
送信対象の顧客情報が表示されます。
この宛先で問題なければ「OK」を、キャンセルする場合は「キャンセル」を押して中止します。
キャンセルした場合はこのようなメッセージが表示されます。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00004/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
var ui = SpreadsheetApp.getUi()
// メニューの表示名
var menu = ui.createMenu('メール送信');
// メニューに追加するボタン
menu.addItem('メール一括送信(特定の都道府県)', 'send_mail_to_specific_pref');
// メニューを画面に追加する
menu.addToUi();
}
function send_mail_to_specific_pref() {
// 顧客情報が入っているシートを取得
const customer_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('顧客リスト');
// 取得するセル範囲を決定するため、最終行を確認
const customer_sheet_lastrow = customer_sheet.getLastRow();
// 顧客情報が記録されているセル全てを取得。
const customer_lists = customer_sheet.getRange('A2:O' + customer_sheet_lastrow).getValues();
// 対象の都道府県を確認するダイアログを開く
let pref_target = Browser.inputBox("都道府県を入力してください", Browser.Buttons.OK_CANCEL);
// 有効ステータスかつ入力した都道府県に一致するものを送信対象とする
// 対象行を格納する変数を準備
let customer_lists_target = Array();
for (i = 0; i < customer_lists.length; i++) {
if (customer_lists[i][0] == '有効' && pref_target == customer_lists[i][8]) {
customer_lists_target.push(customer_lists[i]);
}
}
// 対象が1件も無ければ処理を中止する
if(customer_lists_target.length == 0){
Browser.msgBox("メール送信対象として1件もマッチしませんでした。処理を中止します。");
return;
}
// メールの送信対象をポップアップウィンドウで確認するために、顧客情報を1つの変数に入れる
var confirm_msg = '';
for (i = 0; i < customer_lists_target.length; i++) {
confirm_msg += customer_lists_target[i][1]; // 姓
confirm_msg += customer_lists_target[i][2]; // 名
confirm_msg += ' ' + customer_lists_target[i][8]; // 都道府県
confirm_msg += '\n'; // 改行コード
}
var confirm = Browser.msgBox("以下のお客様へメールを送信します", confirm_msg, Browser.Buttons.OK_CANCEL);
if (confirm == 'cancel') {
Browser.msgBox("処理を中止しました!");
return;
}
// メール本文を取得する処理
// メールが記録されているシートを取得
const mail_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('メール本文');
// 取得するセル範囲を決定するため、最終行を確認
const mail_sheet_lastrow = mail_sheet.getLastRow();
// メール本文を取得
const mail_text = mail_sheet.getRange('B5:B' + mail_sheet_lastrow).getValues();
// 1セルずつ入っている文章を改行コードで連結する
var mail_body = '';
for (var i = 0; i < mail_text.length; i++) {
mail_body += mail_text[i] + '
';
}
// mail送信関連パラメータ取得
const mail_parameter = mail_sheet.getRange('B1:B4').getValues();
mail_from = mail_parameter[0][0];
mail_subject = mail_parameter[1][0];
mail_cc = mail_parameter[2][0];
mail_bcc = mail_parameter[3][0];
// メール送信処理
for (var i = 0; i < customer_lists_target.length; i++) {
var mail_body_inserted = mail_body.replace(/%%family_name%%/, customer_lists_target[i][1]);
var mail_to = customer_lists_target[i][3];
var mail_options = {
'cc': mail_cc,
'bcc': mail_bcc,
'name': mail_from
};
MailApp.sendEmail(mail_to, mail_subject, mail_body_inserted, mail_options);
}
}
メールアドレスのリストに対して、定形文を一斉に送信するGoogle Apps Scriptです。氏名をメール本文に差し込んで送信することができます。
メールアドレスのリストに対して、定形文を一斉に送信するGoogle Apps Scriptです。最終来店日からN日経過したお客様にだけ送信します。
誕生日が近いお客様を対象にメールを送信するGoogle Apps Scriptです。期間の指定はポップアップで入力するので柔軟な範囲指定が可能です。
「メールをあと何通送ることができるのか?」を確認できるGoogle Apps Scriptです。メール通知を多用していると上限にすぐひっかかってしまうんですよね。
Gmailに届いた特定のメールに対し、自動的に定型文を返すGoogle Apps Scriptです。お問い合わせの受付完了通知などにどうぞ。