【RPA運用】営業日実行の制御方法~カレンダーマスタの導入のすすめ~

こんにちは!RPAエンジニアのAです。
普段はWinActorを用いて、お客様先のRPAの保守に携わっています。

RPA開発後、RPA運用を進めていくと以下のような問題が発生することもあるかと思います。
今回はそのような場合の対応策を紹介いたします。

【問題点】
・営業日のみ実行したいが、祝日の取得方法が分からない
・特定の営業日のみ(第2水曜日など)実行したいが、取得方法が分からない
・年末年始といった会社によって異なる休日の取得方法が分からない
・会社カレンダーをRPAに利用したいが、利用方法が分からない
 この問題を解決するためには、以下を実現させることが必要です。
・営業日と非営業日を明示化すること
・実行日が営業日かを確認すること

これらの問題は、RPAだけでは対応がかなり難しいです。
Excelでカレンダーを作成し、RPAロボットと併用することでこれらの問題に対応可能です。

※以下、カレンダーマスタと記載します

RPAだけでは実現が難しい理由として、月の日数や閏年などを考慮すると、
分岐処理では対応出来ない可能性が高いことが挙げられます。

カレンダーマスタ以外にも、タスクスケジューラを用いて実行日を指定することが出来ますが、
カレンダーマスタの見やすさやメンテナンスのしやすさを考慮すると、こちらの方法をおすすめします。

▷カレンダーマスタの作成手順

カレンダーマスタの作成方法は簡単で15~20分程度で作成が可能です。
作り方について、順を追って説明します。

①カレンダー用のExcelファイルを用意する。

②カレンダーマスタの列を作成する。

③予め、日付を入力する。

④曜日を入力する。
 曜日に関しては、関数「=TEXT(セル番地,”aaa”)」を利用すると便利です。

⑤非稼働日を設定する。
 稼働日にも「稼働」など入力する方法はありますが、「非稼働日」のみを入力する方法が手間
 が少なく済みます。

▷WinActorの作成手順

①変数を設定します。 ※カレンダーマスタのフルパスを初期値に設定しています

②変数に営業日か非稼働日を確認したい日付を代入します。
  例)日付取得系の部品

③カレンダマスタの日付列(A列)から、②の日付を検索する。
  例)Excel操作(検索一致) ※終了セルは日付の記載範囲によって調整してください

④③で検索した行数を基に、非稼働列から「非稼働」かどうかを取得する。
  例)Excel操作(値の取得2)

⑤非稼働日かどうかで、分岐を設定する。
  例)分岐グループ

<できあがり例>

以上がカレンダーマスタを利用した稼働、非稼働日の確認方法です。

過去も未来も際限なく記載は可能ですが、カレンダーマスタに記載する期間を決めておき(目安は1年間)、
時期を決めて更新するなど運用を決めておく事をおすすめします。

▷注意点

カレンダーマスタに存在しない日付は判定が不可能です。

日付が検索できない場合のエラー処理は入れておきましょう。

カレンダーマスタの記載期間によりますが、1年間の記載にすると更新が1年後となります。
頻度が少ないため、忘れてしまうとRPAがエラーになったり正常な結果が得られなくなる場合があります。

また、年度が変わるタイミングや年末年始などをカレンダーの更新時期にするなど、
運用でエラーを少なくする工夫も大切です。

▷その他活用例

営業日だけでなく実行したい日のみにフラグを立てることで、細かい制御も可能です。
カレンダーマスタの非稼働列に「第3〇曜日」や「月末」など、他の文言を入力することで、
稼働・非稼働日以外の判定も可能です。

例えば、RPAの実行は毎日行うよう設定し、測定の文言の場合に処理を変更したり、
非稼働日にRPAが実行された瞬間、実行を終了する仕様にすることで、
特定日の実行を制御することができます。

いかがでしたか?
ご参考になれば幸いです。