【生成AI×GAS】複数宛先メール送信GASの解説①
オレンジピーチのトシです。
前回の記事で、GASを用いてスプレッドシートに記載のメールアドレスリストにGmailを作成・送信するスクリプトを作成しました。
今回は、作成したGASのコードを解説していきたいと思います。
(前回の記事はこちらから)
前回のおさらい
前回の記事で作成したGASがこちらです。
function sendEmail() {
// スプレッドシートを開く
var sheet = SpreadsheetApp.getActiveSheet();
// B列2行目から最終行までのメールアドレスを取得
var lastRow = sheet.getLastRow();
var emailRange = sheet.getRange("B2:" + "B" + lastRow);
var emailList = emailRange.getValues();
// 件名と本文を設定
var subject = "月次進捗ファイル(7月度)の更新依頼";
var body = "";
body += "株式会社オレンジピーチ \n";
body += "\n";
body += "営業部 青森 太郎 様\n";
body += "おつかれさまです。\n";
body += "企画部の橙桃です。\n";
body += "7月度の月次進捗ファイルの更新をお願いいたします。\n";
body += "締切は、7月25日となります。それまでに、リンクの月次進捗表を更新して下さい。\n";
body += "\n";
body += "営業部 青森 月次進捗ファイル\nURL: ********\n";
body += "\n"
body += "どうぞよろしくお願いします。";
// 各メールアドレスにメールを送信
for (var i = 0; i < emailList.length; i++) {
var recipient = emailList[i][0];
MailApp.sendEmail({
to: recipient,
subject: subject,
body: body
});
}
}
GASの内容解説
順にコードの解説をしていきます。
アクティブなシートを開く
スプレッドシートのシートを取得して変数sheet に格納する内容です。
「コンテナバインドスクリプト」であれば、アクティブなシートを直接取得することが出来ます。今回であれば、「送信先メールアドレス」のシートがアクティブな状態でGASを起動させることから、このメソッドが用いられたと考えられます。
もちろん、getSheetByName(シート名)などのメソッドでも同じ結果が得られます。
B列2行目から最終行までの範囲を取得する
ここでは、まず、getLastRowメソッドが用いられています。
これにより、変数sheetに格納しているシートの、「データが存在する最終行」を取得することが出来ます。それを変数lastRowに格納しています。
今回のスプレッドシートのデータでは、データがある最終行は4行目なので、「4」という値が格納されることになります。
次に、getRangeメソッドを用いて、メールアドレスが記載されている範囲を取得します。ここで、一つ、工夫が見て取れます。
今回の実際のデータでは、B2セルからB4セルまでの間が取得したい範囲になります。
これをgetRangeメソッドで表すと、
となります。
ここで"B2:B4"というスプレッドシートの範囲を示す値を、次のように分解します。
GASのコードの中では、" "の中は文字列を示し、文字列は + を用いて足し合わせることが出来ます。
つまり、"B2:"+"B"+"4" で、"B2:B4" を表していることになります。
さらに、「"B2:"+"B"+"4"」 の "4" の部分を、変数lastRow に置き換えます。
これによって、B2セルからB列最終行までの範囲を取得するコードが出来ました。
この記載方法を行うとこで、今後、スプレッドシートの行数が増減して、メールアドレスの数が変わっても、同じGASのコードで対象範囲を指定することが出来ます。
この書き方は、よく用いられる方法ですので、覚えておくと、コードを指示する際にも便利に使えると思います。
対象範囲の値を取得する
そして最後に、変数emailRangeの範囲による値を、getValuesメソッドで取得して、 変数emailList に格納しています。
ここまでで、スプレッドシートからメールアドレスを取得することが出来ました。
ここまでのまとめ
getActiveSheet メソッドで、アクティブなシートを取得。
getRange メソッドで、メールアドレスがある範囲を取得。
(その際に、getLastRow メソッドを用いて、データの最下行を取得)getValues メソッドで、範囲の中にある値を取得。
ここまでで、スプレッドシートの中にあるメールアドレスのデータを取得することが出来ました。
次回は、引き続き、GASコードの解説を行っていきたいと思います。
今回は以上です。最後まで読んで頂き、ありがとうございました。
記事の内容が参考になった方は、「スキ」して頂けると励みになります。