Pythonの実行結果(DataFrame)をUiPathに受け渡す方法について

:grey_question: Question

Pythonソースをプロセス内で実行させるために『Pythonスコープ』を配置して、『Python スクリプトを読み込み』~『Python メソッドを呼び出し』~『Python オブジェクトを取得』の一般的な流れでワークフローを作成しています。

また、Pythonの実行結果は、データフレーム形式となっています。
そのため、Python実行結果をプロセスに受け渡すためには、JSON形式で受け渡しを行い、プロセス上でJSON文字列をデータテーブルに変換する処理を作成しようとしています。
※df.to_json(orient = ‘records’)メソッドでデータフレームJSON形式に変換する

しかしながら、Pythonスコープ内の『Python オブジェクトを取得』アクティビティにてエラーメッセージが表示されます。
Python のオブジェクトを取得: Unable to cast object of type ‘Newtonsoft.Json.Linq.JValue’ to type ‘Newtonsoft.Json.Linq.JObject’.

:bulb: Answer

■原因
『Pythonのオブジェクトを取得』アクティビティの出力に設定される変数のデータ型はJObjectですが、UiPathが認識したデータ型はJValueです。暗黙的にJValue型をJObject型に変換することはできないため、上記のエラーが発生しました。

■解決策
UiPath側の実装を以下のように修正すれば、データを正常に受け取ることができます。

1) 『Pythonのオブジェクトを取得』アクティビティ
入力:『Python メソッドを呼び出し』アクティビティの出力(PythonObject型)
出力:String型の変数(または JValue型の変数)

2)『JSONを逆シリアル化』アクティビティ
入力:『Pythonのオブジェクトを取得』アクティビティの出力(JValue型の場合、変数.ToString)
TypeAgument:System.Data.DataTable
出力:System.Data.DataTable型の変数