【生成AI×GAS】営業日を逆算して締切期日設定GASの解説①
オレンジピーチのトシです。
生成AIを用いて「GASでメールを書く」スクリプトを作成する方法を紹介しています。
ここでは、一旦出来上がったGASのコードを修正して、より業務の効率化につながる形に改良を進めています。
今回は、前回作成した、営業日を逆算して締切期日を算出するGASの修正について解説を行います。
GAS初心者の人、プログラム初心者の人でも、生成AIを活用して、GASのスクリプトを改良していく方法を知って頂ければHappyです。
(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 deadline = calculateBusinessDay(year, month);
// 件名を設定
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 += `締切は、**${deadline}**となります。それまでに、リンクの月次進捗表を更新して下さい。\n`;
body += "\n";
body += `${department}部 ${name} 月次進捗ファイル\nURL: ********\n`;
body += "\n";
body += "どうぞよろしくお願いします。";
MailApp.sendEmail({
to: recipient,
subject: subject,
body: body
});
}
}
function calculateBusinessDay(year, month) {
// 月末日を取得
var lastDay = new Date(year, month, 0);
// 営業日を数える変数
var businessDays = 0;
// 営業日を5日戻るまでループ
while (businessDays < 5) {
lastDay.setDate(lastDay.getDate() - 1);
// 土曜日または日曜日ならカウントしない
if (lastDay.getDay() === 0 || lastDay.getDay() === 6) {
continue;
}
// 祝日ならカウントしない
if (isHoliday(lastDay)) {
continue;
}
// 営業日をカウント
businessDays++;
}
// 日付を文字列で返す
return Utilities.formatDate(lastDay, Session.getScriptTimeZone(), 'MM月dd日');
}
function isHoliday(date) {
// GoogleカレンダーAPIを使用して祝日を確認
var calendarId = 'ja.japanese#holiday@group.v.calendar.google.com';
var events = CalendarApp.getCalendarById(calendarId).getEventsForDay(date);
return events.length > 0;
}
GASの内容解説①
今回は、まず最初に、スクリプト全体概要の解説を行っていきます。
今回のGASは、複数の関数から成り立っています。
GASの記述をよく見ると、関数 function の部分が3つあることが分かります。
今回のGASは3つの関数が関連し合って、Gmailの記述が行われています。
ここまでのまとめ
今回は、生成AIが修正したて作成したGASの全体像を解説しました。
次回は、「関数」について詳しく説明したいと思います。
今回は以上です。最後まで読んで頂き、ありがとうございました。
記事の内容が参考になった方は、「スキ」して頂けると励みになります。
いいなと思ったら応援しよう!
この記事が少しでもお役に立てたのなら、サポートいただけると嬉しいです。頂いたご支援は、今後の活動費やコンテンツの質向上に使わせていただきます。