ServiceNowに営業日マスタを作る ~スケジュールの作成~

開発・導入

ServiceNowの日付型フィールドを選択させるときに、自社の営業日・営業時間外は選択させたくない。営業時間内のSLAのみを計測したい、といった場面があると思います。

この記事では、スケジュール、スクリプトインクルード、クライアントスクリプトを使用してこれを制御する方法を解説してきます。
一つの記事にまとめると長くなりそうなので、今回はスケジュールの作成までです!
Google Calender API連携は使わず、すべて手動で行うことになるので一応ご注意ください。

スケジュールとは

ServiceNowにはスケジュールというテーブルが存在します。
ここに任意の日付を登録します。SLAやScheduled Jobやレポートで、作成したスケジュールを呼び出し、その日にちに対する操作をシステムで自動で動かすことができます。

今回は、日本のカレンダー通りに土日・祝日を除いた平日の9:00~17:00を営業日としてスケジュールを作ってみようと思います。

営業日スケジュール

まずは、すべての親となる平日の9:00~17:00の営業日スケジュールを作成しましょう。
メニューから、システムスケジューラ > スケジュール > スケジュールをクリックします。
新規をクリックします。

値を以下のように設定し、送信または保存します。
名前:JP Business Day
タイムゾーン:アジア/東京 or 日本

cmn_schedule – New Record

これでスケジュール事態は作成できましたが、まだ日付の設定が行えていません。
再度、今作成したJP Business Dayを開きます。
関連リストの中にスケジュールエントリのタブがあります。このタブを開き、新規をクリックします。

値を以下のように設定し、送信または保存します。
名前:営業日
表示方法:空き
時期:営業日を適用したい日付 09:00:00 ~ 17:00:00
繰り返し:毎週平日(月~金)

cmn_schedule_span – New Record

これで営業日のスケジュールが完成しました。
JP Business Dayを開き、関連リンクのスケジュールを表示をクリックしてみましょう。
土日以外の平日9:00~17:00までがスケジュールに登録されたことを視覚的に確認できるようになりました。

show_schedule.do – JP Business Day

固定祝日スケジュール

続いて祝日用のスケジュールを登録していきましょう。
見出しで固定としているのは、日付の決まった祝日と、日付の決まっていない祝日が日本には存在するからです。
振替休日や、秋分の日・春分の日は日付の決まっていない祝日に該当しますね。

メンテナンスのしやすさを意識して、固定祝日スケジュールと流動祝日スケジュールを分けて作成します。
スケジュール、スケジュールエントリの作成・追加手順はほとんどJP Business Dayと同じですが、設定値が違うのでご注意ください。

JP Business Dayを作成したのと同じように、スケジュールリストで新規をクリックします。
値を以下のように設定し、送信または保存します。
名前:JP Holiday
タイムゾーン:アジア/東京 or 日本

cmn_schedule – New Record

次にスケジュールエントリの作成ですが、面倒ですが日本の祝日を手動で登録していきます。
一般的な祝日を以下に記載しておきます。
会社によっては、年末年始・お盆休みなどは変わってくると思うので、ご自身の勤め先のカレンダーで置き換えてください。

正月休暇:1/1~1/3
成人の日:1月 第2月曜日
建国記念日:2/11
天皇誕生日:2/23
昭和の日:4/29
憲法記念日:5/3
みどりの日:5/4
こどもの日:5/5
海の日:7月 第3月曜日
山の日:8/11
お盆休暇:8/13~8/16
敬老の日:9月 第3月曜日
スポーツの日:10月 第2月曜日
文化の日:11/3
勤労感謝の日:11/23
年末休暇:12/29~12/31

ではスケジュールエントリを入力していきます。

JP Business Dayとの違いは、以下の通りにすることです。
タイプ:除外済み
表示方法:取り込み中
時期:祝日の日付 終日にチェック

また、〇日~〇日までといった期間を設けた祝日や、第〇月曜日だったりと流動的になりそうな祝日に関しても考慮する必要があります。
画像を置いておくので、入力の参考にしてみてください。

すべて入力したら、固定祝日のスケジュールは完成です。
JP Holidayを開き、関連リンクのスケジュールを表示をクリックしてみましょう。
すべての祝日がスケジュールに登録されていると思います。来年・再来年とカレンダーを見てみても祝日が正しく登録されていればOKです!

show_schedule.do – JP Holiday

流動祝日スケジュール

固定祝日スケジュールでも触れたように、日本には秋分の日、春分の日、振替休日といった日付が毎年異なる祝日が存在します。
このスケジュールは、翌年のカレンダーが発表されたらすぐにメンテナンスできるようにしておく必要があります。

では、スケジュールとスケジュールエントリを作成しましょう。
名前:JP Float Holiday
タイムゾーン:アジア/東京 or 日本

cmn_schedule – New Record

スケジュールエントリは固定祝日とは違い、毎年繰り返さない設定にしなければなりません。
設定としては以下のようになります。

cmn_schedule_span – New Record

2022年は残念ながら振替休日はなかったようです……。
春分の日と秋分の日の登録のみで完了します。
今回の例ではスケジュールを表示し、2022年には登録があり、2023年には登録がなければOKです!

スケジュールの紐づけ

これまで、3つのスケジュールを作成してきました。
今、この3つのスケジュールはただ別々に存在しているだけです。ServiceNowに土日祝日を判断させるには、この3つのスケジュールを1つのカレンダーとして認識させる必要があります。

やり方はとてもシンプルです。
最初に作成した営業日スケジュールである、JP Business Dayを開きましょう。
関連リストの子スケジュールタブを開き、編集をクリックします。
コレクションの検索ボックスにJPと入力し、表示されたJP HolidayとJP Float Holidayを子スケジュールリストに移し、保存ます

cmn_schedule – JP Business Day

これで3つのスケジュールの紐づけが完了しました。
スケジュールを表示をクリックして、カレンダーがどのようになっているかを確認しましょう。

show_schedule.do – JP Business Day

平日は空きであることを示す水色表示ですが、祝日に設定された日付は灰色で表示されるようになりました。
土日に関しても細かく設定したい方は、土日用のスケジュールを子スケジュールに追加してしまっても問題ありませんが、今回はこのスケジュールを完成形とします。

まとめ

これでスケジュールが完成しました!
ノーコードでカレンダーマスターをServiceNowに作成することができます。
冒頭でも触れましたが、このスケジュールをSLAやレポートから呼び出すことで、簡単に営業日内の分析やレポートの共有を行うことができます。

コメント

タイトルとURLをコピーしました