1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UiPath】ファイル名重複時の連番追加について

Posted at

はじめに

ロボでは処理完了後に処理ファイルを指定されたフォルダに格納するケースが多々あります。
業務内容によっては1日に大量のファイルを処理するケースがあります。
その際に対応するケースとして、1ロボを長時間実行または複数台ロボを並行実行する方法があります。
今回はファイル名重複時、末尾に連番追加した処理をナレッジとして残します。

この記事の対象者

  • UiPath初学者
  • UiPath Studioロボ実行にて、ファイル名重複時の連番追加を実装したい方

目次

  1. 開発環境紹介
  2. 処理要件確認
  3. 実装
  4. 解説

開発環境紹介

  • 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

処理要件確認

  • ロボ処理完了後にファイル名の重複があった場合、ファイル名の末尾に連番を追加してリネームを行う

実装

image.png

「コードを呼び出し」アクティビティを利用した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("ファイル拡張子"))
代入:移動後ファイルパス+1
Path.Combine(dicInputItem("処理完了格納パス") , dicInputItem("ファイル名") & "_" & moveFileCount.ToString & dicInputItem("ファイル拡張子"))

おわりに

今回は、【UiPath】ファイルリネーム実装についての中のリネームパターン3について、不完全な部分を修正した形のリネーム方法をまとめました。今回のケースは過去の実務案件で2件要望がありましたが、どのロボも長時間稼働および複数ファイルを処理する際に利用されていました。RPA開発初心者でファイル名に連番を追加したい方向けに、参考になれば幸いです。

参考サイト

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?