GASの時間処理について、下記で解説を行いました。
【GAS】日付・時間の処理まとめ! UNIX時間・formatDate・Dateオブジェクトを理解しよう
しかし営業日を判定するには、GASを理解するだけではなく、もう一工夫が必要です。
今回は第一営業日・最終営業日を取得する方法を解説していきます。書いてある事をよりちゃんと理解しようという場合は上記の記事を参照してみて下さい。
まずは休日・祝日がカレンダー通りの場合です。土日と祝日が休みで、他に独自の休日はないというケースですね。
この場合は下記のスクリプトで第一営業日を取得できます。
function 今月の第一営業日を取得する()
{
//先月の月末を取得する
var 今年 = new Date().getFullYear()
var 今月 = new Date().getMonth()
var Dateオブジェクト = new Date(今年,今月,0)
//今月の1日が祝日 or 土日ならDateオブジェクトに1日足す
var UNIX時間_1日 = 1 * 24 * 60 * 60 * 1000
while(!祝日じゃない || !土日じゃない)
{
var UNIX時間_1日後 = Dateオブジェクト.getTime() + UNIX時間_1日
var Dateオブジェクト = new Date(UNIX時間_1日後)
var 祝日カレンダー = "ja.japanese#[email protected]";
var 祝日じゃない = CalendarApp.getCalendarById(祝日カレンダー).getEventsForDay(Dateオブジェクト).length == 0
var 土日じゃない = Dateオブジェクト.getDay() != 0 && Dateオブジェクト.getDay() != 6
}
//Dateオブジェクトが第一営業日になっている
Logger.log(Dateオブジェクト)
}
全体の流れはざっくり下記です。
それぞれの部分を解説していきます。