UiPathの「データテーブルを出力」アクティビティと「データテーブルを生成」アクティビティおよびその応用について


はじめに

UiPathには多くの便利なアクティビティがありますが、このドキュメントでは文字列とDataTableを変換する「データテーブルを出力」アクティビティ(Output DataTable)と「データテーブルを生成」アクティビティ(Generate DataTable)について、応用も含めて書こうと思います。なお似たような名前のアクティビティとして「データテーブルを構築」(Build DataTable)がありますが、これはDataTableを新規に作るための物なので、ここでは説明しません。

2つのアクティビティの概要

データテーブルを出力アクティビティ(Output DataTable)

DataTableからCSV形式の文字列を出力するアクティビティです。
設定項目はほとんどなく、入力としてDataTable、出力としてString型変数を指定します。
ヘッダー付き、カンマ区切り、カンマやダブルクォーテーション等の処理等自動で処理してくれます。

個人的にはヘッダー有無、demiliterの設定などが自由にできるようしてほしいところです。

データテーブルを生成アクティビティ(Generate DataTable)

文字列からDataTableに変換するためのアクティビティです。
このアクティビティは非常に強力で、固定長テキストフォーマットまたはCSV形式を解析して、DataTableに変換してくれます。CSVの解析は区切り文字、改行文字を任意に設定することもできます。また列ヘッダー有無や型の自動検出等の設定も可能です。

 個人的に注意が必要と思うのは、型の自動検出機能です。デフォルトでONになっていますが、この機能のために思わぬ読み取り結果になることがしばしばあります。この設定はOFFにしておくとすべてString型となりますので、意図せぬ結果を防ぐためにも基本はOFFにしておくほうが良いと思います。

応用

CSVを読み込みアクティビティ(Read CSV)の代替

 UiPathにはCSVを読み込みアクティビティ、CSVに書き込みアクティビティといったCSV形式のファイルとDataTableとを変換するアクティビティがあります。
 特にデータテーブルを生成アクティビティは読み込み用途の代替として強力です
例えば以下のようなヘッダ行が3列、データ部分が4列のCSVファイルがあったとします。

sample.csv
A,B,C
1,2,3,4
5,6,7,8

 
これをCSVを読み込みアクティビティで読み込もうとすると以下のエラーが発生します。

CSV を読み込み: test.csv の CSV ファイル形式は無効です。行 2 は、ヘッダー行よりも値を多く含んでいます。

しかし、以下のようにテキストをファイルから読み込みアクティビティとデータテーブルを生成アクティビティを組み合わせて読み込むと、このような不定形なCSVでも不足しているヘッダを自動的に補完して読み込んでくれます。

以下は読みこんだ後のLocalパネルでみたデータテーブルの中身です。

DataTableの操作を文字列操作で実現

 DataTableと文字列を相互変換できると、DataTableでは複雑な操作が必要なケースでも一旦文字列にして、正規表現などの文字列操作で簡単に実現できるケースがあります。

例えば

のような表があり

のように属性値を一列にまとめたいとします。

正攻法的にはDataTableとして読み込み、繰り返し(各行)アクティビティを使って各行ごとに処理していくこといなりますが、これを文字列操作で行うと以下のようになります。

データ中にカンマやダブルクォートなどの特殊な文字が含まれないことが前提になりますが、2つの正規表現置換と1つの単純置換でこれを処理することができます。

まとめ

このように特定の場面でとても有用な2つのアクティビティ、頭の片隅にでも良いので、覚えておくとよいでしょう。