下記のような感じのメールを一括で送信したかったのでGAS対応したでございます。
ごむを様 挨拶文など 【旧データ】 差し込まれた旧データの内容 【新データデータ】 差し込まれた新データの内容 〆の文など
シートの構成
シートは「メールテンプレート」「送信リスト」の2シート。
メールテンプレート>
差込するメールのテンプレート。 {{}}の個所に「送信リスト」シートで入力された値が差し込まれる。
送信リスト>
差し込むデータを入力。 ここに入力した値が差し込みデータとして使用される。項目は適当なので目的に合わせて適宜修正すること。
GASの仕様
Gmailアカウントで送信してよい環境であれば、こんな感じで一括送信するのが楽なのではないかしら。
- 簡単な仕様説明
- A列が空白でなければ繰り返し処理をする
- 1件ずつ取得した内容を差し込んで、B列「メールアドレス」に入力されたメールアドレスに対してメールを送信する
- メール送信したら「送信チェック」列に「送信済」と入力。(「送信チェック」列にが空白以外の時は処理しない)
- コメントアウトしている「確認用」は出力に問題がないかチェックするときに使用。普段は使用しないのでコメントアウト
コード
function sendMail() {
//*****************************************************
// 差込処理
//*****************************************************
//スプレッドシートを取得
var book = SpreadsheetApp.getActiveSpreadsheet();
// 本文設定シートを取得
var sheetAtesakiList = book.getSheetByName("送信リスト");
// データが入力されている範囲を取得
var datRange = sheetAtesakiList.getDataRange();
// 処理対象の行数を取得
const FValues = sheetAtesakiList.getRange('A:A').getValues(); //A列の値を全て取得
const LastRow = FValues.filter(String).length; //空白の要素を除いた長さを取得
//最終行
var numRows = LastRow;
//*****************************************************
// 本文
//*****************************************************
// メール本文シートを取得
var sheetMail = book.getSheetByName("メールテンプレート");
var body = sheetMail.getRange(1, 2).getValue();
//*****************************************************
// 差込データの取得
//*****************************************************
//2行目から処理
for (var i = 2; i <= numRows; i++) {
// 対象行の差込データを取得
//名前
var sendName = sheetAtesakiList.getRange(i, 1).getValue();
//送信先メールアドレス
var getTo = sheetAtesakiList.getRange(i,2).getValue();
//旧データ
var oldData = sheetAtesakiList.getRange(i, 3).getValue();
//新データ
//var newData = sheetAtesakiList.getRange(i, 4).getValue();
//件名
var sasikomiGoSubject = "メールの件名";
//本文
var sasikomiGoBody = body;
// 送信チェックの項目が空白なら処理する(何かしら入力されていたら処理しない)
var done = sheetAtesakiList.getRange(i, 5).getValue();
if(done === "" ){
//宛名差込処理
if (sendName != "") {
sasikomiGoBody = sasikomiGoBody.replace("{{名前}}", sendName, "g");
}
//旧データの差込処理
if (oldData != "") {
sasikomiGoBody = sasikomiGoBody.replace("{{旧データ}}", oldData, "g");
}
新データの差込処理
if (newData != "") {
sasikomiGoBody = sasikomiGoBody.replace("{{新データ}}", newData, "g");
}
// 対象行の宛先を取得
var to = getTo;
//確認用
// console.log("【送信先】\n" +to + "\n【タイトル】\n" + sasikomiGoSubject +"\n【本文】\n" + sasikomiGoBody);
//↓↓↓送信しないときはここをコメントアウトすること↓↓↓
MailApp.sendEmail(to, sasikomiGoSubject, sasikomiGoBody);
//最後に「送信済」に設定する
sheetAtesakiList.getRange(i, 5).setValue("送信済");
}//送信チェック
}//差し込みの繰り返し処理
}//sendMail