Pythonとuipath間の変数受け渡しがうまくいかない

■やりたいこと

openweathermapでAPI叩いて、取得したJSONデータをpython側でパースして、CSVにする
CSVファイルをgoogleスプレッドシートに書き込む

■実装内容

uipath側でjson parseしたオブジェクトをpythonの関数に渡して、pandasで処理させようとするのですが、エラーが起きてしまいます。

■質問内容

pythonメソッドの呼び出しでは、入力パラメータとして、デシリアライズ後のjsonOBjectを渡しているのですが、このようなオブジェクトを渡すことはできないのでしょうか。(添付ファイルがuipathファイルになります)

■エラー

{
“message”: “Python メソッドの呼び出し: Python メソッドの呼び出し中にエラーが発生しました”,
“level”: “Error”,
“logType”: “Default”,
“timeStamp”: “19:08:53”,
“processVersion”: “1.0.0”,
“jobId”: “f310a366-6530-4c5d-a543-3a72e737a1bd”,
“robotName”: “BIZOP”,
“machineId”: 0,
“fileName”: “Main”
}

■pythonコード

import pandas as pd
import json

def process1(response_json):
json_load=json.load(response_json)
datatable=pd.json_normalize(json_load)
# print(datatable)
main_list=
description_list=

for x in range(len(datatable)):
    main_list.append(datatable['weather'][x][0]['main'])
    description_list.append(datatable['weather'][x][0]['description'])

datatable['weather_info']=main_list
datatable['weather_description']=description_list

return datatable

APIdemo2 (2).zip (35.3 KB) APIdemo2 (2).zip (35.3 KB)

せっかくjson,loadsで読める形式のJSONデータをなぜ.NETのオブジェクトにしてPythonに渡したいのかがちょっとよくわかりませんでした。Python側でも、なぜパラメーターでデータを渡しているのにファイルを読みに行くメソッド使ってるのかが理解できませんでした。
そのままJSON形式のテキストで渡して、スクリプトから返ってくる時もJSONにしてテキストで返せばよいのでは…

■呼び出し
image

■Script
import pandas as pd
import json

def process1(response_json):
json_load=json.loads(response_json)
datatable=pd.json_normalize(json_load)
#ZAP
return datatable.to_json()

2 Likes

ご回答ありがとうございます。

いただいたコードで再度実行してみたものの、以下のエラーが起きています。
3を返すスクリプトを書いたところ、問題なく動いているのですが、いただいたコードだとエラーがでております。

pandasといったライブラリを使った処理をuipathでは使うことができないのではないかと疑っているのですが、そういうわけでもないんですよね。

ご知見をいただけると幸いです。

■エラー内容
{
“message”: “Python メソッドの呼び出し: Python メソッドの呼び出し中にエラーが発生しました”,
“level”: “Error”,
“logType”: “Default”,
“timeStamp”: “17:26:14”,
“processVersion”: “1.0.0”,
“jobId”: “2cfb25e7-17f5-439a-8c82-8fc3a16cfa3d”,
“robotName”: “BIZOP”,
“machineId”: 0,
“fileName”: “Main”
}

エラーメッセージがすべて “Python メソッドの呼び出し: Python メソッドの呼び出し中にエラーが発生しました”となってしまうので、どんなエラーが出ているのかが分からないのが悩ましいですよね。

私の環境では途中の#ZAP部分を省略すると稼働しました。
計算式内でもエラーが出ているようですが、そちらはPythonのデバッガで確認ください。
多分、サンプルが読み込んでたJSONとパラメーターのJSONのフォーマットがちょっと違うのだと思います。

pandasがダメかどうかは、import行でパッケージが正しく読み込めなければエラーが出ます。、次くらいまで削ってみてエラーが出るようでしたら、pandas のインストールとパスの設定を確認してください。

import pandas as pd
def process1(response_json):
return 1

■パスの確認
コマンドプロンプトで 次のコマンドを打って次の内容が入っているかを確認してください。
“C:\Users\bizop\AppData\Local\Programs\Python\Python36-32\Scripts”
SET PATH

【ご参考】 Windows 10 で PATH 環境変数を設定する方法

■pandasインストール方法の確認(複数回インストールしても同じバージョンがインストールされてることが表示されるだけですので念のため実行ください)
コマンドプロンプトから次のコマンドを実行
%LOCALAPPDATA%\Programs\Python\Python36-32\Scripts\pip.exe install pandas

2 Likes