
私には、月曜日にメールを送る作業があります。
今までは、新規作成 ⇒ 宛先入力 ⇒ 件名・本文入力 ⇒ ファイルを添付 ⇒ 送信と、手作業でやってきました。
ふと、思い立ちました。「これも自動化できないか?」と。
実行するには、次の月曜日を求める処理が欠かせません。
と、いうわけで、そのロジックを考えてみました。
次の月曜日を取得するには?
コードは次のとおり。
Day.jsライブラリを使っています。
function myFunction() {const Today = dayjs.dayjs();let NextMonday = '';if (Today.day() == 0) {NextMonday = Today.add(1,'day').format('M月D日')} else {NextMonday = Today.add(8 - Today.day(),'day').format('M月D日')}console.log(NextMonday);}
どんなロジック?
変数を表にまとめてみました。
| 今日の曜日 | 次の月曜日までの日数 | day()の戻り値 |
| 日曜日 | 1日 | 0 |
| 月曜日 | 7日 | 1 |
| 火曜日 | 6日 | 2 |
| 水曜日 | 5日 | 3 |
| 木曜日 | 4日 | 4 |
| 金曜日 | 3日 | 5 |
| 土曜日 | 2日 | 6 |
日曜日以外は「8」から「day()の戻り値」を引けば、次の月曜日までの日数が求められます。
なので、単純に今日が日曜日なら1日加算、それ以外なら「8-day()の戻り値」を加算しています。
「次の」ではなく「翌週の」月曜日なら、8日後になるのでif文で分岐せずに「8-day()の戻り値」で処理すれば良いです。
まとめ
Google Apps Scriptで次の月曜日を取得するには「8-day()の戻り値」を加算すれば、ほぼ完成です。日曜日は扱い方によって処理が分かれます。
月曜日に送るメール作成時間が圧縮されて、とても満足しています。