Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

UiPath XAML DisplayName Indexer

UiPath XAMLファイルのDisplayName属性に連番インデックスを自動追加するツール

これは何?

UiPathワークフローの各アクティビティに [1]、[2]、[3] のような番号を自動で振ります。 デバッグ時やログ確認時に「どのアクティビティか」を素早く特定できます。

採番ルール

1. 基本ルール

処理前:
  <Sequence DisplayName="メイン処理">
  <Assign DisplayName="変数セット">
  <WriteLine DisplayName="ログ出力">

処理後:
  <Sequence DisplayName="[1] メイン処理">
  <Assign DisplayName="[2] 変数セット">
  <WriteLine DisplayName="[3] ログ出力">

ポイント: 元のDisplayNameの前に [番号] を追加するだけ


2. DisplayNameがない要素

DisplayName属性がないアクティビティには、要素名をDisplayNameとして自動追加します。

処理前:
  <Sequence>                              ← DisplayNameなし
  <Assign DisplayName="変数セット">

処理後:
  <Sequence DisplayName="[1] Sequence">   ← 自動追加
  <Assign DisplayName="[2] 変数セット">

3. 既に番号がある要素はスキップ

[...] で始まるDisplayNameは処理をスキップします。

処理前:
  <Sequence DisplayName="[99] 既存の番号">   ← スキップ対象
  <Assign DisplayName="変数セット">
  <WriteLine DisplayName="[CHI-001] チケット番号付き">  ← スキップ対象

処理後:
  <Sequence DisplayName="[99] 既存の番号">   ← そのまま
  <Assign DisplayName="[1] 変数セット">      ← 新規採番
  <WriteLine DisplayName="[CHI-001] チケット番号付き">  ← そのまま

ポイント: [数字] でも [文字列] でも、[...] で始まっていればスキップ


4. 既存の数字インデックスは欠番にする

既に使われている数字は、新規採番で使いません。

処理前:
  <Sequence DisplayName="[3] 既存">     ← 3は使用済み
  <Assign DisplayName="処理A">
  <WriteLine DisplayName="[5] 既存">    ← 5は使用済み
  <If DisplayName="処理B">

処理後:
  <Sequence DisplayName="[3] 既存">     ← そのまま
  <Assign DisplayName="[1] 処理A">      ← 1を採番
  <WriteLine DisplayName="[5] 既存">    ← そのまま
  <If DisplayName="[2] 処理B">          ← 2を採番(3はスキップ、4を採番、5はスキップ...ではなく、単純に次の空き番号)

採番の流れ:

  1. 開始番号 = 1
  2. 「処理A」に1を振る → 次は2
  3. 「処理B」に2を振る → 次は3だが、3は使用済みなので4へ
  4. 以降も同様に、使用済みの番号はスキップ

5. フォルダ処理は全ファイル通し番号

フォルダ内の複数ファイルを処理する場合、全ファイルで通し番号になります。

フォルダ構成:
  MyProject/
  ├── Main.xaml
  └── Sub.xaml

処理後:
  Main.xaml:
    [1] メイン処理
    [2] サブ呼び出し

  Sub.xaml:
    [3] サブ処理        ← Main.xamlからの続き
    [4] データ処理

ポイント: ファイルごとに1から始まるのではなく、プロジェクト全体で連番


6. 重複インデックスは採番し直す

同じ番号が複数のファイルや要素に存在する場合、全ての重複要素を採番し直します。

処理前:
  Main.xaml:
    <Sequence DisplayName="[3] 処理A">
  Sub.xaml:
    <Sequence DisplayName="[3] 処理B">   ← [3]が重複!

処理後:
  Main.xaml:
    <Sequence DisplayName="[1] 処理A">   ← 採番し直し
  Sub.xaml:
    <Sequence DisplayName="[2] 処理B">   ← 採番し直し

ポイント: 重複があると全ての重複要素が新しい番号に置き換わる


クイックスタート

# ビルド
dotnet build

# フォルダ内の全XAMLを処理
dotnet run -- "C:\prj\UiPath\MyProject"

# まず確認だけ(ドライモード)
dotnet run -- "C:\prj\UiPath\MyProject" --dry-run

コマンドライン引数

引数 説明 デフォルト
<パス> XAMLファイルまたはフォルダ 必須
-s, --start 開始番号 1
-b, --backup バックアップ作成 true
-d, --dry-run 変更せず確認のみ false
# 0から開始
dotnet run -- "C:\prj\UiPath\MyProject" -s 0

# バックアップなし
dotnet run -- "C:\prj\UiPath\MyProject" -b false

バックアップ

処理対象 バックアップ形式 例
フォルダ フォルダ名_backup_日時 MyProject_backup_20260107_143025
単一ファイル ファイル名.bak Main.xaml.bak
ドライモード 作成しない -

サポートするアクティビティ

以下のUiPathアクティビティを認識します(DisplayNameがなければ自動追加):

制御: Sequence, Flowchart, If, Switch, While, DoWhile, ForEach, TryCatch, Throw ...

UI操作: Click, TypeInto, SendHotkey, GetText, FindElement, ElementExists ...

Excel: ExcelApplicationScope, ReadRange, WriteRange, ReadCell, WriteCell ...

データ: BuildDataTable, AddDataRow, FilterDataTable, ReadCSV, WriteCSV ...

ファイル: FileExists, ReadTextFile, WriteTextFile, CopyFile, DeleteFile ...

その他: Assign, InvokeWorkflowFile, LogMessage, Delay, Comment ...

※ FlowStep、FlowDecision、Catch 等はDisplayNameをサポートしないためスキップ

技術仕様

  • .NET 8.0 / C# 12
  • LINQ to XML
  • UTF-8 (BOMなし) で保存
  • Serilog でログ出力(logs/ フォルダ)

プロジェクト構造

UiPathDisplayName/
├── Program.cs           # エントリーポイント
├── XamlIndexer.cs       # コアロジック
├── XamlIndexer.csproj   # プロジェクト設定
└── README.md

ライセンス

MIT License

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages