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】【DU】抽出結果からの値の取り出し方

Last updated at Posted at 2024-10-24

はじめに

  • 本記事は、Document Understanding のクラシックプロジェクトの抽出結果オブジェクト(ExtractionResult型)から値を取り出す方法を扱います。
  • モダンプロジェクトの抽出結果オブジェクトからの値取り出しはこちら
  • 記事の内容は、個人の見解または確認結果であり、UiPath の公式見解ではありません。
  • 製品仕様や参考画像は 24.10 バージョンのもので構成しています。

抽出結果オブジェクト

ExtractionResult型のガイドページ↓↓

値の取り出し方(実装例)

任意の標準フィールドの値を取得

抽出結果オブジェクト.GetSimpleFieldValues("★フィールドのID")

★フィールドのIDはタクソノミーマネジャーで確認できます。
DUの抽出4.JPG

UiPath.DocumentProcessing.Contracts.Results.SimpleFieldValue のリストが返却されるので、次の手順で受ける側の変数を用意します。

変数の型で「Array of [T]」を選択

DUの抽出1.JPG

「Browse for Types」よりデータ型を探しにいきます。

DUの抽出2.JPG

UiPath.DocumentProcessing.Contracts.Results.SimpleFieldValue を選択しましょう。

DUの抽出3.JPG

上で作成した変数(SimpleFieldValue)に「抽出結果オブジェクト.GetSimpleFieldValues("★フィールドのID")」を代入し、
SimpleFieldValueのリスト(0).RawValue で値を取り出します。
(複数値の場合は繰り返し処理(コレクションの各要素)などを使います。)

DUの抽出5.JPG

任意の表データを取得

抽出結果オブジェクト.GetTable("★表のID")

返却されるのは単純なデータテーブルではないため、Cellsプロパティをつかって値を出力してみます。

繰り返し(コレクションの各要素)の要素に
抽出結果オブジェクト.GetTable("★表のID").Values(0).Cells
を指定します。
各要素(currentResultsTableCell)はセルの行・列のインデックスと値などを保持しています。

DUの抽出6.JPG

「セルに書き込み」アクティビティを例に説明すると
書き込み内容: currentResultsTableCell.Values(0).Value
書き込む場所: EXCELファイルの参照名.Sheet("Sheet1").Cell(UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(currentResultsTableCell.ColumnIndex+1)+(currentResultsTableCell.RowIndex+1).ToString)
の様に設定することで表データを出力できます。

列インデックスの変換(数字←→文字)には「ExcelUtilities」を使います。

変換の例 構文
列番号(2) → 列名称(B) UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetter(2)
列名称(C) → 列番号(3) UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnLetterToColumnIndex("C")

任意フィールドの値操作(半角スペース除去の例)

標準フィールド

開発Tips2.JPG
開発Tips3.JPG

繰り返し(コレクションの各要素)を配置し、入力に 「自動抽出結果.ResultsDocument.Fields」 を指定、データ型に 「UiPath.DocumentProcessing.Contracts.Results.ResultsDataPoint」 を指定します。
代入を配置し、左辺に 「currentItem.Values(0).Value」 、右辺に 「currentItem.Values(0).Value.ToString.Replace(" ","")」 を指定します。
なお、キャプチャの例では 「currentItem.FieldName = "自由記述欄"」 と記述することで半角スペースを除去する項目を絞っています。

値が抽出されなかったケースでは「currentItem.Values(0)」でエラーとなってしまうため、代入の前に次の条件文を入れておくのをお勧めします。
currentItem.Values.Length > 0 AndAlso currentItem.Values(0).Value.Contains(" ")

表フィールド

DUの抽出7.JPG

繰り返し(コレクションの各要素)の要素に
抽出結果オブジェクト.ResultsDocument.Tables
を指定し、さらに同アクティビティで
currentItem.Values(0).Cells
の要素を設定します。

データ抽出されたセルのみ対象とするために次の条件文を入れておきます。
CurrentValue.IsMissing = False

DUの抽出9.JPG

代入アクティビティを配置し、次の様に設定します。
左辺: CurrentValue.Values(0).Value
右辺: CurrentValue.Values(0).Value.ToString.Replace(" ","")

さいごに

いかがでしたでしょうか。
モダンプロジェクトの抽出オブジェクトと比べるとクラシックの抽出オブジェクトは複雑なため、久しぶりに触ると沼ります。。。
意外とWEB上に参考ページがなさそうだったので整理して記事化しました。
DUを利用する皆様のお役に少しでも立てば幸いです。
最後までお読みいただきありがとうございます(・ω・)ノ

関連記事

抽出結果オブジェクトから直接ではなく、一度専用のアクティビティでエクスポートする実装例はこちら↓↓

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?