【生成AI×GAS】部署名・氏名の差し込みメール解説②
オレンジピーチのトシです。
今回は、引き続き、スプレッドシートのリストに従って、本文中の部署名や宛先氏名を変更してメールを送るGASの解説を行います。
(前回解説の記事はこちら)
作成したGASのおさらい
解説を進めているGASがこちらです。
前回の解説で前半部分の解説が終わりましたので、今回は”各メールアドレスにメールを送信”の箇所から、解説を進めていきます。
function sendEmail() {
// スプレッドシートを開く
var sheet = SpreadsheetApp.getActiveSheet();
// A列2行目から最終行までの氏名を取得
var nameRange = sheet.getRange("A2:A" + sheet.getLastRow());
var nameList = nameRange.getValues();
// B列2行目から最終行までのメールアドレスを取得
var emailRange = sheet.getRange("B2:B" + sheet.getLastRow());
var emailList = emailRange.getValues();
// C列2行目から最終行までの部署名を取得
var departmentRange = sheet.getRange("C2:C" + sheet.getLastRow());
var departmentList = departmentRange.getValues();
// 現在の日付を取得
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() + 1; // 月は0始まりなので、+1する
// 件名を設定
var subject = `月次進捗ファイル(${year}年${month}月度)の更新依頼`;
// 各メールアドレスにメールを送信
for (var i = 0; i < emailList.length; i++) {
var recipient = emailList[i][0];
var name = nameList[i][0];
var department = departmentList[i][0];
// 本文を設定
var body = "";
body += "株式会社オレンジピーチ \n";
body += "\n";
body += `${department}部 ${name} 様\n`;
body += "おつかれさまです。\n";
body += "企画部の橙桃です。\n";
body += `${year}年${month}月度の月次進捗ファイルの更新をお願いいたします。\n`;
body += "締切は、**7月25日**となります。それまでに、リンクの月次進捗表を更新して下さい。\n";
body += "\n";
body += `${department}部 ${name} 月次進捗ファイル\nURL: ********\n`;
body += "\n";
body += "どうぞよろしくお願いします。";
MailApp.sendEmail({
to: recipient,
subject: subject,
body: body
});
}
}
GASの内容解説②
各メールアドレスにメールを送信する設定が行われていきます。
for (初期化式; 条件式; 更新式)
for文を用いて記載が行われています。1行目はfor文の条件式などが記載され
ています。
基本的なfor文の構文は次のようなものです。
実際のコードに当てはめてみると・・・。
まず、i の初期値として 0 から始まります。
そして、i の値が emailList.length の値よりも小さい場合に、本体の処理が行われます。
emailList.length とは、変数 emailList の中に格納されている配列の個数のことです。
変数 emailList はスプレッドシートのB2セルからデータのある最下段までの値を取得しているので、emailList.length は「3」となります。
つまり、データの個数分、ループ本体の処理が行われる訳です。
ループの本体
続いて、ループ本体の記載になります。
左辺は、変数 recipient を宣言する宣言文です。
右辺には、変数 emailList があります。
ここで、変数 emailList の中身を確認してみましょう。
スプレッドシートからgetValues メソッドで値を取得したところで、console.logを用いて、変数のログを表示します。
変数の中身は二次元配列であることが分かります。
(二次元配列について詳しく知りたい人は、こちらの記事をご覧ください)
次に、配列からインデックスを用いて値を取り出します。
先ほどの、配列 emailList から最初の一次配列の、最初の値を取り出します。
最初のインデックスは [0] ですので、emailList[0][0] とすることで、値を取り出すことが出来ます。
つまり、配列の先頭のメールアドレスを1つ変数 recipient に格納することが出来ました。
次の行の解説です。ここでは、配列 nameList からインデックスを用いて、
[i (=0) ][0] の値を取り出しています。つまり、1つ目の氏名を、変数 name に格納しています。
続いての行でも同様に、配列 department からインデックスを用いて、
[i (=0) ][0] の値を取り出しています。つまり、1つ目の部署名を、変数 department に格納しています。
ここまでのコードで、配列から、変数 recipient にメールアドレス、変数 name に氏名、変数 department に部署を格納することが出来ました。
ここまでのまとめ
今回は、for文の使用に向けて、各変数に配列から指定の値を取得する部分の解説を行いました。
次回は、一番のポイントである本文の解説を行いたいと思います。
今回は以上です。最後まで読んで頂き、ありがとうございました。
記事の内容が参考になった方は、「スキ」して頂けると励みになります。