Google Apps Script

【GAS】土日・祝日・特定休日を判定する

こんにちは、もりです!

ノンプロ研メンバーとペアプロで書いたお題「休日を判定する関数」のスクリプトをメモしておきます。

ペアプロとは?

「ペアプログラミング」の略です。1つのPCを使い、2人1組で開発する手法です。

「ナビゲーター(指示・サポート)」「ドライバー(実装)」に分かれ、一定時間ごとに役割交代しながら進めていきます。

ノンプロ研では、GASのスクリプトファイルを共有し、Zoomの画面共有機能を使いながら、完全オンラインで実施しました。

日付処理などで役立つはず!

GASで休日を判定する

まず、「休日」の種類を定義します。この記事で紹介するスクリプトは、下記の3つを判定します。

  • ①土日
  • ②祝日
  • ③特別休日
    →お盆休み、年末年始、会社の創立記念日など、①②に該当しない休日

 

スクリプトがこちらです。与えた日付に応じた返り値は下記のとおり。

  • 休日の場合:true
  • その他(営業日)の場合:false

以下、解説です。

①土日の判定

土曜日or日曜日の場合、trueを返します。

 

DateオブジェクトのgetDayメソッドで曜日を取得します。

Dateオブジェクト.getDay()

  • 引数:なし
  • 戻り値:0~6の値
  • 説明:Dateオブジェクトの「曜日」を取得します。

戻り値の一覧です。

曜日 戻り値
日曜日 0
月曜日 1
火曜日 2
水曜日 3
木曜日 4
金曜日 5
土曜日 6

②祝日の判定

祝日の場合、trueを返します。

 

祝日判定には、Googleの「祝日カレンダー」を使用します。カレンダーIDは「ja.japanese#holiday@group.v.calendar.google.com」です。

Calenderオブジェクト.getEventsForDay(date)

  • 引数:Dateオブジェクト
  • 戻り値:CalendarEventオブジェクトが格納された配列
  • 説明:引数に指定した日に発生するすべてのイベントを取得します。
  • 公式リファレンスはこちら

戻り値が「配列」なので、lengthプロパティで中身の有無をチェックします。中身が有れば「祝日」なのでtrueを返します。

③特定休日の判定

会社独自の休日に一致する場合は、trueを返します。一致しない場合はfalseが返ります。

特定休日は、4桁の数値(mmdd形式)を、配列形式で指定します。

 

ポイントは、someメソッドです。

Arrayオブジェクト.someメソッド(コールバック関数)

  • 引数:配列のすべての要素に実行する関数
  • 戻り値:ブール値
  • 説明:配列のいずれかの要素がコールバック関数の条件を満たす場合、trueを返す。それ以外の場合、falseを返す。
  • JavaScript公式リファレンスはこちら

※someメソッドは、Arrayオブジェクトの「反復メソッド」の一種です。

「反復メソッド」についてはこちらの記事を参照してください→【GAS入門】Arrayオブジェクトのmapメソッドの使い方

【補足】someメソッド

この一行は「アロー関数」を使った省略形の書き方です。

 

省略無しで書くとこのようになります。

 

以上です!日付処理にぜひ使ってみてくださいね。