はじめに
この投稿は、RPAツールのUiPathで「ディクショナリやデータテーブルなどのデータをデバッグ」する方法についての投稿です。
パッと出てこないことがあるので、備忘録として。
配列やリスト型のデバッグは簡単
配列やリストなどの「値が連続して格納されている」シンプルな構造であれば、String.Join
で結合して出力します。
<メッセージにセットしている値>
String.Join(",", 配列)
String.Join(",", リスト)
実行すると、以下のようにログ出力されます。
配列の内容){"はるみ","せとか","紅まどんな"}
↓
はるみ,せとか,紅まどんな
リストの内容){"日向夏", "水晶文旦", "紅まどか"}
↓
日向夏,水晶文旦,紅まどか
ちなみにJoinは「Strings.Join」もありますが、こちらは引数の順番が違うので注意が必要です。
メソッド | 第一引数 | 第二引数 | 名前空間 |
---|---|---|---|
String.Join | 区切り文字 | 配列 | System |
Strings.Join | 配列 | 区切り文字 | Microsoft.VisualBasic |
ディクショナリのデバッグ
ディクショナリは「Key-Value」形式のリストなので「Key-Valueの文字列」のリストにしてからJoinで結合します。
<メッセージにセットしている値>
String.Join(Environment.NewLine, From kv in ディクショナリ Select String.Format("[{0}] {1}",kv.Key, kv.Value))
実行すると、以下のようにログ出力されます。
ディクショナリの値){"1", "甘平"}, {"2", "不知火"}
↓
[1] 甘平
[2] 不知火
ディクショナリが複数あって、何度もデバッグする場合は「出力式を描くのが面倒」なので、Func型の変数にして定義すると楽です。
<既定値に入れる値>
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) アクティビティ で出力することも出来ますが、一旦変数に格納する必要があります。
<データ テーブルを出力アクティビティを使用してデバッグ出力するフローの図>
1行でデバッグもできます。データテーブルは「各行 X 列名」の形式ですが、ディクショナリと同じ要領で1行を文字列化したリストにして、Joinで結合します。
<メッセージにセットしている値>
String.Join(",", From c As System.Data.DataColumn In データテーブル.Columns.OfType(Of System.Data.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型の変数にして定義すると楽です。
<既定値に入れる値>
Function(dt As System.Data.DataTable) String.Join(",", From c As System.Data.DataColumn In dt.Columns.OfType(Of System.Data.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))
終わりに
UiPathで「データをデバッグ出力する」場合に、役に立てば幸いです。
この記事が参考になったら、 LGTMをお願いします。
閲覧ありがとうございました。