見出し画像

【生成AI×GAS】営業日を逆算して締切期日設定GASの解説④

オレンジピーチのトシです。
今回は、引き続き、営業日を逆算して締切期日を設定するGASの解説を行います。

作成したGASのおさらい

前回の記事で、営業日を遡る部分を解説しましたので、今回は続きの解説を行っていきます。
(前回の記事はこちら)


GASの内容解説④

今回も、コードを順に解説していきます。

日付を文字列化する

この部分は、UtilitesクラスのformatDateメソッドを用いて、日時を文字列化する部分です。

// 日付を文字列で返す
return Utilities.formatDate(lastDay, Session.getScriptTimeZone(), 'MM月dd日'); }

これまでのスクリプトによって、変数 lastDayには最終日から5営業日を遡った日付が格納されています。
しかし、この変数をそのまま出力すると、次のような形式で出力されてしまいます。

変数 lastDay のログ

メール本文の中で、読みやすい形に日付の表示方法を変更します。

解説

  • Utilities.formatDate():formatDateメソッドは、日付オブジェクトを指定されたタイムゾーンとフォーマットに従って文字列に変換します。

  • lastDay:対象の変換したい日付オブジェクト変数です。

  • Session.getScriptTimeZone():これは現在のスクリプトが実行されているタイムゾーンを取得する関数です。これにより、日付がユーザーのローカルタイムゾーンに合わせて正しく表示されます。

  • 'MM月dd日':日付の表示形式を指定する文字列です。この例では、以下のようになります。

    • MM:月を2桁の数字で表示(例:08、12)

    • dd:日を2桁の数字で表示(例:05、31)

    • 月、日:日本語の「月」「日」をそのまま表示

より詳しく知りたい人は、Googleのリファレンスもご覧ください。

関数 calculateBusinessDay(year, month) のまとめ

ここまでで、関数 calculateBusinessDay の解説が完了しました。
この関数では、「月末日を取得」、「営業日を5日遡るループ(土曜日または日曜日はカウントしない、祝日はカウントしない)」、「日付を文字列で返す」という命令が実行されて、本体である 関数 sendEmail() の変数 deadline として当月の最終日の5営業日前の日付が文字列で返す処理が実行されます。

関数 sendEmailの解説の続き

変数 dealine の宣言が出来ましたので、関数 sendEmail の解説を進めて行きます。

ここからは、送信するEmailの内容の設定になります。
(これまでのGAS改良の記事の中で解説済みの内容は説明省略します)

件名、送信先メールアドレスの設定(説明省略)

送信するメールの件名、宛先、氏名などを設定します。
この部分は、改良前から変更ありません。

// 件名を設定
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];

メール本文の修正

続いてメール本文の記載になります。
ここでの改善点は、変数 deadline です。
以前は、固定の文字列であった締切日を、いくつもの関数を駆使して計算した結果である 変数 deadline で動的に表現できるようにしています。
これにより、自動的に締切日を記載することが出来ます。

// 本文を設定
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 });

送信されたメールの内容

送信されたメールの内容がこちらです。
(この解説を書いている間に、7月から8月に月が替わり、メールの内容が変更になっています。)
このように、締切日を人が計算する必要なく、GASが自動的に表記してくれます。

送信されたメールの内容

営業日を逆算して締切期日設定GASの振り返り

ここまでで、今回のGAS修正のポイントである「営業日を逆算して締切期日設定」についての解説が終わりました。
修正点としては、「締切日」の表記の箇所だけですが、別の関数を呼び出したり、while文を使用したりと様々な構文を使用して、実行できるようになりました。
複雑にはなりましたが、生成AIを用いることで、このような複雑なGASを作成出来ることがお分かりいただけたと思います。

まとめ

今回まで4回に営業日を逆算して締切期日設定についての解説を行ってきました。
結果的には複雑なGASとなりましたが、生成AIを用いてることで、指示文(プロンプト)を書くだけで、GASの修正が出来ることがご理解いただけたと思います。
また、ここまで解説を読んで頂いた人は、それぞれのGASのコードの内容についてもご理解いただけたのではないかと思います。
このようなコードをゼロから人が書くには、多くの学習や経験(そしてそのための時間)が必要になりますが、生成AIを用いることで、それらの時間を最小化し、より効率的にGASを作成することが出来ます。
しかし、生成AIは完璧ではありません。人が書いた指示文の内容を理解しているか、生成したコードは意図に沿ったものかなどは、人が判断する必要があります。
人と生成AIが協力して、業務の効率化が進むイメージを感じて頂けたならHappyです。

ここまでで、大部分のGASは修正できました。
次回からは、最後の1か所、URLのリンクについてのGAS修正を進めて行きたいと思います。

今回は以上です。最後まで読んで頂き、ありがとうございました。
記事の内容が参考になった方は、「スキ」して頂けると励みになります。


いいなと思ったら応援しよう!

オレンジピーチ★トシ
この記事が少しでもお役に立てたのなら、サポートいただけると嬉しいです。頂いたご支援は、今後の活動費やコンテンツの質向上に使わせていただきます。