私には、月曜日にメールを送る作業があります。
今までは、新規作成 ⇒ 宛先入力 ⇒ 件名・本文入力 ⇒ ファイルを添付 ⇒ 送信と、手作業でやってきました。
ふと、思い立ちました。「これも自動化できないか?」と。
実行するには、次の月曜日を求める処理が欠かせません。
と、いうわけで、そのロジックを考えてみました。
次の月曜日を取得するには?
コードは次のとおり。
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()の戻り値」を加算すれば、ほぼ完成です。日曜日は扱い方によって処理が分かれます。
月曜日に送るメール作成時間が圧縮されて、とても満足しています。