はじめに
ロボでは処理完了後に処理ファイルを指定されたフォルダに格納するケースが多々あります。
業務内容によっては1日に大量のファイルを処理するケースがあります。
その際に対応するケースとして、1ロボを長時間実行または複数台ロボを並行実行する方法があります。
今回はファイル名重複時、末尾に連番追加した処理をナレッジとして残します。
この記事の対象者
- UiPath初学者
- UiPath Studioロボ実行にて、ファイル名重複時の連番追加を実装したい方
目次
- 開発環境紹介
- 処理要件確認
- 実装
- 解説
開発環境紹介
- OS:Windows11
- 開発ツール:UiPath Studio
- バージョン:2023.10.0
- ライセンス:Community License
- モダン デザイン エクスペリエンス:いいえ
- Microsoft Excel:2310
- 本投稿の開発環境になっております
- バージョンによっては画面が一部異なる可能性はございます
UiPath 依存関係
パッケージ名 | バージョン |
---|---|
UiPath.Excel.Activities | 2.22.2 |
UiPath.Mail.Activities | 1.21.1 |
UiPath.System.Activities | 23.10.2 |
UiPath.Testing.Activities | 23.10.0 |
UiPath.UIAutomation.Activities | 23.10.3 |
処理要件確認
- ロボ処理完了後にファイル名の重複があった場合、ファイル名の末尾に連番を追加してリネームを行う
実装
「コードを呼び出し」アクティビティを利用したDictionaryの設定値 (コードを呼び出し:処理データセット)
'====================
'処理概要:ファイル操作情報をセット
'IN:
'OUT:なし
'OutDicInputItem:ファイル操作情報
'KEY:インプットファイルパス
'KEY:ファイル名
'KEY:ファイル拡張子
'KEY:処理完了格納パス
'IO:なし
'====================
OutDicInputItem = New Dictionary(Of String,String)
'dicInputItem
OutDicInputItem("インプットファイルパス") = "C:\RPA\UiPath\入力"
OutDicInputItem("ファイル名") = "処理台帳"
OutDicInputItem("ファイル拡張子") = ".xlsx"
OutDicInputItem("処理完了格納パス") = "C:\RPA\UiPath\出力\FileRename\処理完了"
コードを呼び出し:処理データセット 「呼び出されたコード引数」
Name | Direction | Type | Value |
---|---|---|---|
OutDicInputItem | 出力 | Dictionary | dicInputItem |
本ロボで利用する変数情報
名前 | 変数の型 | スコープ | 規定 | 注釈 |
---|---|---|---|---|
dicInputItem | Dictionary | MoveResultFile_DuplicationCheck | ファイル操作情報 | |
inputFilePath | String | MoveResultFile_DuplicationCheck | 移動前ファイルパス | |
moveFileCount | Int32 | MoveResultFile_DuplicationCheck | ファイル番号 | |
outputFilePath | String | MoveResultFile_DuplicationCheck | 移動後ファイルパス |
解説
移動先のファイル名を取得後、移動先に既に該当するファイルが存在するかチェックを行います。
移動先のファイル名が存在しない場合、ファイル名に連番を追加して存在有無を繰り返しチェックを行うことにより、移動先のファイル名の設定を行います。
【メリット】
・1日に大量のインプットファイルの処理を行う場合、ファイル名重複を避けて移動する場合に活用できる
【デメリット】
・格納先のフォルダ内にファイルが既に処理済のファイルが大量に格納されている場合、リネームするためのループチェックに時間がかかる
※対策として、ロボ実行日フォルダ(yyyyMMdd)を作成してアウトプット先にすることにより対処可能となる。
実装補足
Path.Combine(dicInputItem("インプットファイルパス"),dicInputItem("ファイル名") & dicInputItem("ファイル拡張子"))
Path.Combine(dicInputItem("処理完了格納パス") , dicInputItem("ファイル名") & dicInputItem("ファイル拡張子"))
Path.Combine(dicInputItem("処理完了格納パス") , dicInputItem("ファイル名") & "_" & moveFileCount.ToString & dicInputItem("ファイル拡張子"))
おわりに
今回は、【UiPath】ファイルリネーム実装についての中のリネームパターン3について、不完全な部分を修正した形のリネーム方法をまとめました。今回のケースは過去の実務案件で2件要望がありましたが、どのロボも長時間稼働および複数ファイルを処理する際に利用されていました。RPA開発初心者でファイル名に連番を追加したい方向けに、参考になれば幸いです。