2
Help us understand the problem. What are the problem?

posted at

updated at

【UiPath】実行中にデータをデバッグ出力する

はじめに

この投稿は、RPAツールのUiPathで「ディクショナリやデータテーブルなどのデータをデバッグ」する方法についての投稿です。

パッと出てこないことがあるので、備忘録として。

配列やリスト型のデバッグは簡単

配列やリストなどの「値が連続して格納されている」シンプルな構造であれば、String.Join で結合して出力します。

image.png

<メッセージにセットしている値>
String.Join(",", 配列)
String.Join(",", リスト)

実行すると、以下のようにログ出力されます。

配列の内容){"はるみ","せとか","紅まどんな"}
 ↓
はるみ,せとか,紅まどんな

リストの内容){"日向夏", "水晶文旦", "紅まどか"}
 ↓
日向夏,水晶文旦,紅まどか

ちなみにJoinは「Strings.Join」もありますが、こちらは引数の順番が違うので注意が必要です。

メソッド 第一引数 第二引数 名前空間
String.Join 区切り文字 配列 System
Strings.Join 配列 区切り文字 Microsoft.VisualBasic

ディクショナリのデバッグ

ディクショナリは「Key-Value」形式のリストなので「Key-Valueの文字列」のリストにしてからJoinで結合します。

image.png

<メッセージにセットしている値>
String.Join(Environment.NewLine, From kv in ディクショナリ Select String.Format("[{0}] {1}",kv.Key, kv.Value))

実行すると、以下のようにログ出力されます。

ディクショナリの値){"1", "甘平"}, {"2", "不知火"}
 ↓
[1] 甘平
[2] 不知火

ディクショナリが複数あって、何度もデバッグする場合は「出力式を描くのが面倒」なので、Func型の変数にして定義すると楽です。

image.png

デバッグ出力時は、この変数を使用して出力します。
image.png

<既定値に入れる値>
Function(dc As Dictionary(Of String, Object)) String.Join(Environment.NewLine, From kv in dc Select String.Format("[{0}] {1}",kv.Key, kv.Value))

データテーブルのデバッグ

データテーブルは データ テーブルを出力 (Output Data Table) アクティビティ で出力することも出来ますが、一旦変数に格納する必要があります。

<データ テーブルを出力アクティビティを使用してデバッグ出力するフローの図>
image.png

1行でデバッグもできます。データテーブルは「各行 X 列名」の形式ですが、ディクショナリと同じ要領で1行を文字列化したリストにして、Joinで結合します。

image.png

<メッセージにセットしている値>
String.Join(",", From c As DataColumn In データテーブル.Columns.OfType(Of DataColumn) Select "[" & c.ColumnName & "]") & Environment.NewLine & String.Join(Environment.NewLine, From r As DataRow In データテーブル.Rows.OfType(Of Datarow) Select String.Join(",", r.ItemArray))

長いですね。。。
実行すると、以下のようにログ出力されます。

[品種],[旬]
あすみ,2~3月
つのかがやき,1月中旬~2月中旬

(ディクショナリと同じく)データテーブルが複数あって、何度もデバッグする場合は「出力式を描くのが面倒」なので、Func型の変数にして定義すると楽です。

image.png

<既定値に入れる値>
Function(dt As DataTable) String.Join(",", From c As DataColumn In dt.Columns.OfType(Of DataColumn) Select "[" & c.ColumnName & "]") & Environment.NewLine & String.Join(Environment.NewLine, From r As DataRow In dt.Rows.OfType(Of Datarow) Select String.Join(",", r.ItemArray))

デバッグ出力時は、この変数を使用して出力します。
image.png

終わりに

UiPathで「データをデバッグ出力する」場合に、役に立てば幸いです。

この記事が参考になったら、 LGTMをお願いします。
閲覧ありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?