みなさんこんにちは!GASおじさんです。
今回は以下のようなスプレッドシートの名簿に、下記のメール本文を一斉送信するスクリプトを解説していきます。

A列に連番、B列に「お名前」、C列に「Email」、D列に「ご案内URL」という項目をそれぞれ用意しています。
このような名簿リストに、以下のメール本文を送信します。
<<お名前>>様 いつもお世話になっております。 受講URLをご案内いたします。 <<ご案内URL>> どうぞよろしくお願いいたします。
上記メール文の<<お名前>>
の部分が、スプレッドシートのB列に、<<ご案内URL>>
の部分がスプレッドシートのD列に対応するような差し込みメールをGASで作ります。
なお、サンプル名簿は以下に共有しておきますので、必要な場合はコピーしてご利用ください。(スクリプトも添付されています。)
スプレッドシートの名簿に差し込みメールを一斉送信するGAS
スプレッドシートのメニューバーからApps Scriptを開いてください。

エディタを開いたら、以下のコードを貼り付けてください。
function sendEmailToList() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('名簿リスト');
const lastRow = sheet.getLastRow();
const values = sheet.getRange(2, 1, lastRow-1, 4).getValues();
for(const value of values){
const [number, name, email, url] = value;
sendEmail(name, email, url);
}
}
function sendEmail(name, email, url) {
const subject = '受講URLのご案内';
const body =
`${name}様
いつもお世話になっております。
受講URLをご案内いたします。
${url}
どうぞよろしくお願いいたします。`;
GmailApp.sendEmail(email, subject, body);
}

ファイルを保存して実行します。
実行完了後Gmailの送信済みメールを確認すると…



すべてのリストに差し込みメールが送信されました!
コード解説
それではコードについて解説していきます。
sendEmail関数
まずはsendEmail
関数についてです。
function sendEmail(name, email, url) {
const subject = '受講URLのご案内';
const body =
`${name}様
いつもお世話になっております。
受講URLをご案内いたします。
${url}
どうぞよろしくお願いいたします。`;
GmailApp.sendEmail(email, subject, body);
}
こちらはその名の通り、ただメールを送るだけの関数ですね。
13行目のGmailApp.sendEmail(email, subject, body);
という1行がメールを送るためのコードです。
第1引数のemail
が宛先、第2引数のsubject
がメールの件名、第3引数のbody
がメールの本文ですね。
bodyを定義する際は、バッククォート(`
)を利用することで、文字列の中で変数を扱うことができます。
変数を扱う際は、${変数}
というふうに、ドルマークと波括弧で表現します。これによって本文へのデータの差し込みを実現します。
sendEmailToList関数
次にsendEmailToList
関数です。
function sendEmailToList() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('名簿リスト');
const lastRow = sheet.getLastRow();
const values = sheet.getRange(2, 1, lastRow-1, 4).getValues();
for(const value of values){
const [number, name, email, url] = value;
sendEmail(name, email, url);
}
}
こちらはスプレッドシートから名簿リストの情報を取得して、for文で各リストに対してsendEmail
を実行する、という関数ですね。
5行目の、
const values = sheet.getRange(2, 1, lastRow-1, 4).getValues();
は、2行1列目から、10行4列分のデータを取得しますよ、という意味です。

取得したvaluesに対してfor文を回します。
7行目の、
const [number, name, email, url] = value;
で各列のデータに対して変数名をつけています。

そしてsendEmail(name, email, url);
でメールを送る、という内容ですね。
まとめ
以上、GASで差し込みメールを作る方法について解説しました。
スプレッドシートのフォーマットなどは現場によって異なってくると思いますので、適宜ご自身の環境にあわせてコードを書き換えて実装してみてください!
コメント