5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【UiPath】祝日を判定する

Posted at

はじめに

この投稿は、RPAツール「UiPath」の 実装例 の記事です。
良くある実装ですので、参考程度に。

UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 30日目の投稿でもあります。

企画の内容は こちら 。カレンダーのURLは こちら です。

祝日をどうやって判定するか

ざっくり言えば、以下の2択だと思います。

- 1)ネット上にある「祝日リストAPI」を使用して判定
- 2)自分で「祝日リスト」を管理して判定

「1」の場合、APIの情報が古かったり、特別休暇日を設定出来ないなどの課題があります。そのため大抵の場合は「2」の方法に落ち着きます。

また、「Orchestratorの非稼働日設定があるから、それで祝日を管理しよう」という案も出ますが、止めたほうが良さそうです。
この機能は「Orchestrator上のジョブの非稼働日」を定義するためで、用途が違います。「非稼働日制限を適用」をオフにすれば制限は受けませんが、それだと「非稼働日」の機能ではなくなってしまいます。

※ 「祝日=非稼働日」とするなら、利用できるかも知れません。
※ DataServiceに祝日リストを入れるという形でも良いかも知れません。
※ Googleカレンダーの「日本の休日」を使用するのもありかも知れません。

と、色々考えていくと、Excelで祝日を管理するというのが、その「簡単さ・確実さ」で考えると「妥当」かと思います。

Excelシートの祝日リストで判定する

一番オーソドックスなのがこの方法だと思います。リスト管理して、データテーブルで読み込んで、判定します。
シートはこんな感じだと思います。
image.png

会社や組織によって、創立記念日などを祝日扱いにする日があれば、上記に行を追加します。

読み込む xaml ワークフロー側は以下のようなものです。
image.png

このワークフローを呼び出せば、祝日かを判定できます。

問題点として「呼び出すたびにエクセルシートを再読込してしまう」のがちょっと残念です。なので「読み込み」は1回で済むようにしたワークフローを以下で公開しています。

どうやっているかというと、アプリケーションリソース領域にデータテーブルを格納し、2回目以降の呼び出しでは、シートは読まずにメモリからデータテーブルを取得しています。

image.png

この「アプリケーションリソース」を使用した実装は、乱用するとメモリの衝突に繋がり、また可読性の低下につながるので、推奨はできませんが、使用方法をピンポイントに絞った仕様であれば使っても良いと思います。「推奨はできないが自己責任で」というスタンスだと思います。

終わりに

いかがでしたでしょうか?実装の参考になれば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?