[ServiceNow]OOTBのカレンダーフィルター機能を使ってみた

## 初めに
最近寒暖差が激しいので、皆さん体調崩してないですか？
私は、咳と鼻水が止まらないです。

お詫び：
アドベントカレンダー関係者の皆様、遅れてしまい申し訳ありません。。。。


## やりたいこと
ServiceNowの日付項目のフィルター機能で、色々な応用が出来そうなOOTB機能がありましたので、使ってみたいと思います。
以下の公式ドキュメントの機能となります。
https://docs.servicenow.com/ja-JP/bundle/sandiego-platform-administration/page/administer/time/task/define-business-calendar-filtering-options.html


## 概要説明
今回は「ビジネスカレンダー」というものを使ってみます。
四半期や会計年度を管理するのに使われるものになります。
何とこれは、日付フィールドのフィルターに使用することも出来ます！

## テーブル構造
ビジネスカレンダーは複数のテーブルから成り立っています。
ビジネスカレンダーアプリケーション配下のこれらのテーブルたちです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/9623ba18-6dd3-1166-7dc2-6be0a2250e65.png)


それぞれの関係性・役割を簡単に図にしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/b1b43862-ec69-a520-84b3-6edcf72ca23d.png)


## 設定手順
では早速、設定の方法を見ていきましょう。

#### ビジネスカレンダー
ビジネスカレンダーテーブルは、今回の機能の主となるテーブルです。
カレンダーを判別できるように、名前やラベルを指定し、タイムゾーンを設定します。
今後このテーブルに期間やフィルター範囲を紐付けていきます。
公式Docs：https://docs.servicenow.com/ja-JP/bundle/sandiego-platform-administration/page/administer/time/task/define-business-calendar-entries.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/b8dfe1c1-1570-0578-e96f-5385de145197.png)

#### ビジネスカレンダーエントリ
期間を指定するテーブルとなります。
ビジネスカレンダーの関連リストから、新規作成を行っていきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/b191214f-7e13-b32e-6d75-7eca953b8d1e.png)
エントリ名は参照項目となっています。
付けたい名前が無い場合は、POPUPやエントリ名モジュールから登録を行います。
また、カレンダー内で期間が重複している場合は、登録エラーとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/24d52184-738e-46b6-cd4d-be0b99c4b111.png)
※エントリ名未作成の場合は、エントリ名を作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/329ab0d1-bcfb-283d-b3bc-657287803b1f.png)

今回は5つ期間を設定してみました。（ちなみに期間のテーマは、期末テストという事にいてます笑）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/2d17d649-1a6c-4852-051f-815983b2f3fd.png)

#### ビジネスカレンダーフィルターオプション
続いては、フィルターに使用する際に範囲を指定します。
現在の日付が当てはまる期間を0として、一つ前を-1、一つ先を1といった形で登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/310e4512-eedd-8e25-c73c-fdd1fcb68af2.png)
2つ先の期間まで有効にする場合は、2と入力する感じですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/0c219add-a3d3-d57d-8180-d4fbd3c3dbc3.png)
これで、「一つ前、現在、一つ先、2つ先」がフィルターで使用できるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/0bf10323-fc58-2263-ea49-088c13b80632.png)

#### パッケージのカレンダー
最後に、所定のアプリケーションで、ビジネスカレンダーを使用可能にする設定を行います。
パッケージのカレンダーモジュールから、新規登録を行います。
※今回は「Qiita」というカスタムアプリケーションで、試しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/6a37ac97-a311-3df6-38c0-0272de8221f2.png)
アプリケーションとカレンダーを指定するだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/01274694-5a5a-0644-4a7a-3c22af7317ae.png)
これでフィルターを使用する準備完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/89bf23ed-e529-22a2-2771-7c146ba48c6e.png)


## 動作確認
フィルターを検証するために、2023/01～2024/12までの日付レコードを用意しました。
この開始日時にフィルターを使用してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/170dca3b-660b-abce-0619-83cf16b691fd.png)
フィルターの一番下に今回フィルターオプションで指定した4つの範囲が追加されていますね。
（"最後"は1つ前の期間、"この"は現在、"次は"1つ先、"次の2"は2つ先　です。）
（日本語表記については、今後のアップデートに期待しましょう笑）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/41aa2b51-56a5-d429-e055-13bf146bb267.png)
では実際にフィルターをかけてみましょう。
現在は、12月なので、次のフィルタを使うと、次の期間の7件がヒットするはず。。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/7aeeb439-cb01-e699-6b08-5d8fb3a1cc4e.png)
成功の様です！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448204/cd2cb2fb-d722-c53b-f22b-2ec3471daf86.png)

## さいごに
今回はOOTBで作成できる日付のフィルターを触ってみました。
この機能を使用するとレポートやダッシュボードの表現の幅が広がるのではないでしょうか？
是非皆さんも試してみてください！！