Python を使用した JSON レスポンスの解析
- 最終更新日2023/04/05
Python を使用した JSON レスポンスの解析
Automation 360 の Python スクリプトを使用して、Bot をビルドする Python 関数を実行します。Python 関数を使用して、REST Web サービスの GET リクエストからの JSON レスポンスを解析します。
前提条件
Bot をビルドするには、以下があることを確認します。
- Python プログラミング言語に関する基本的な知識。
- Automation Anywhere Bots の作成に関する基本的な経験。
- Python 3 をダウンロードしてインストールします。
次のいずれかを実行します。
- Python のインストール時には、必ず、Python のインストール中に [Python x.xx をパスに追加] を選択してください。
-
環境変数にパスを追加します。
- Python のインストール時には、必ず、Python のインストール中に [Python x.xx をパスに追加] を選択してください。
手順
- Control Room にログインします。
-
左側のペインで [オートメーション] をクリックします。
使用可能な Bots とフォームのリストが表示されます。
-
[Bot を作成] をクリックします。
- [名前] フィールドに「PythonTutorial」と入力します。
- [作成と編集] をクリックします。
-
[アクション] ウィンドウで [変数] をクリックして、次の新しい変数を作成します。
- 名前: dResponse、[タイプ] > [ディクショナリ] および [サブタイプ] > [文字列]。
- 名前: dRetrieveValue、[タイプ] > [ディクショナリ] および [サブタイプ] > [任意]。
- 名前: dResponseBody、[タイプ] > [文字列]。
- 名前: sFullName、[タイプ] > [文字列]。
- 名前: sLocation、[タイプ] > [文字列]。
- 名前: sTotalUserCount、[タイプ] > [文字列]。
- 名前: nTotalUserCount、[タイプ] > [数字]。
- 名前: nCurrentUser、[タイプ] > [数字]。
- 名前: sCurrentUser、[タイプ] > [文字列]。
- 名前: prompt-assignment、[タイプ] > [文字列]。
-
[アクション] ウィンドウで、[REST Web サービス] > [GET メソッド] の順に選択し、Bot フローの [開始] の下に配置します。
-
[URI] フィールドに、「https://randomuser.me/api/?results=5&inc=name,email,location&nat=us」と入力します。
これは、呼び出しを行うアプリケーションにランダムなユーザーの詳細を返すサンプル API です。
-
[認証モード] ドロップダウン リストで、[認証なし] を選択します。
- [変数に出力を代入] ドロップダウン リストで、[dResponse - 文字列のディクショナリ] を選択します。
-
[URI] フィールドに、「https://randomuser.me/api/?results=5&inc=name,email,location&nat=us」と入力します。
-
[アクション] ウィンドウで、[文字列] > [代入] アクションの順にクリックし、[REST Web サービス] アクションの下のキャンバスにドラッグします。
-
[元の文字列変数/値を選択] フィールドに、「$dResponse{Body}$」と入力します。
- [ターゲットの文字列変数を選択] ボックスの一覧で、[dResponseBody - 文字列] をクリックします。
-
[元の文字列変数/値を選択] フィールドに、「$dResponse{Body}$」と入力します。
-
[アクション] ペインで [Python スクリプト] > [開く] をクリックし、[文字列] > [代入] アクションの下のキャンバスにドラッグします。
-
[Python] フィールドで、[手動インポート] を選択します。
-
[ここにスクリプトを入力します] フィールドに、次のコードをコピーして貼り付けます。
import json def get_node_count(response): #parse response as json response_dict=json.loads(response) # Create list from JSON body response_body = response_dict['results'] #return the count of entries in JSON body as string lengthasstring = str(len(response_body)) return lengthasstring def get_full_name(dictRequest): itemCount = int(dictRequest['count']) #parse response as json response_dict=json.loads(dictRequest['response']) # Create list from JSON body response_body = response_dict['results'] #Extract values to return return response_body[itemCount]['name']['first'] + " " + response_body[itemCount]['name']['last'] def get_location(dictRequest): itemCount = int(dictRequest['count']) #parse response as json response_dict=json.loads(dictRequest['response']) # Create list from JSON body response_body = response_dict['results'] #Extract values to return return response_body[itemCount]['location']['city'] + ", " + response_body[itemCount]['location']['state']
- [Python ランタイム バージョン] フィールドは、デフォルト値 3 のままにします。
-
[Python] フィールドで、[手動インポート] を選択します。
-
[アクション] ウィンドウで、[Python スクリプト] > [関数を実行] をクリックし、[Python スクリプト] > [開く] アクションの下のキャンバスにドラッグします。
- [Python セッション] フィールドは、[デフォルト] のままにします。
- [実行する関数の名前を入力します] フィールドに、「get_node_count」と入力します。
-
[関数への引数] ドロップダウン リストで、[dResponseBody - 文字列] を選択します。
- [変数に出力を代入] ドロップダウン リストで、[sTotalUserCount - 文字列] を選択します。
-
[アクション] ウィンドウで [ディクショナリ] > [挿入] をクリックし、[Python スクリプト] > [開く] アクションの下のキャンバスにドラッグします。
- [ディクショナリ変数] フィールドで、[dRetrieveValue - ディクショナリ] を選択します。
- [このキーに関連付ける] フィールドに、「response」と入力します。
- [新しい値] ドロップダウン リストで、[dResponseBody - 文字列] を選択します。
-
[変数に前の値を代入] ドロップダウン リストで、[prompt-assignment - 文字列] を選択します。
-
[アクション] ウィンドウで、[文字列] > [数値に変換] をクリックし、[ディクショナリ] > [挿入] アクションの下のキャンバスにドラッグします。
- [文字列を入力] フィールドに、「$sTotalUserCount$」と入力します。
-
[変数に出力を代入] ドロップダウン リストで、[nTotalUserCount - 数字] を選択します。
-
[アクション] ウィンドウで、[ループ] > [ループ] の順にクリックします。
- [ループ タイプ] > [反復子] で、ドロップダウン リストから [n 回] を選択します。
- [回数] フィールドに、「$nTotalUserCount$」と入力します。
-
[現在の値を変数に代入] ドロップダウン リストで、[nCurrentUser - 数字] を選択します。
-
[アクション] ウィンドウで、[数字] をクリックし、[デクリメント] を選択して、[ループ] アクション内に配置します。
- [数字を入力] フィールドに、「$nCurrentUser$」と入力します。
- [デクリメント値を入力] フィールドに、「1」と入力します。
-
[変数に出力を代入] ドロップダウン リストで、[nCurrentUser - 数字] を選択します。
-
[アクション] ウィンドウで、[数字] をクリックし、[文字列に変換] を選択して、[数字] > [デクリメント] の下の [ループ] アクション内に配置します。
- [数字を入力] フィールドに、「$nCurrentUser$」と入力します。
- [小数点以下の桁数を入力] フィールドに、「0」と入力します。
-
[変数に出力を代入] ドロップダウン リストで、[sCurrentUser - 文字列] を選択します。
-
[アクション] ウィンドウで、[ディクショナリ] > [挿入] の順にクリックし、[ループ] アクション内に配置します。
- [ディクショナリ変数] フィールドで、[dRetrieveValue - ディクショナリ] を選択します。
- [このキーに関連付ける] フィールドに、「count」と入力します。
- [新しい値] ドロップダウン リストで、[sCurrentUser - 文字列] を選択します。
-
[変数に前の値を代入] ドロップダウン リストで、[prompt-assignment - 文字列] を選択します。
-
[アクション] ウィンドウで、[Python スクリプト] > [関数を実行] の順にクリックし、[ループ] アクション内に配置します。
- [Python セッション] フィールドは、[デフォルト] のままにします。
- [実行する関数の名前を入力します] フィールドに、「get_full_name」と入力します。
- [関数への引数] ドロップダウン リストで、[dRetrieveValue - ディクショナリ] を選択します。
-
[変数に出力を代入] ドロップダウン リストで、[sFullName - 文字列] を選択します。
-
[アクション] ウィンドウで、[Python スクリプト] > [関数を実行] の順にクリックし、[ループ] アクション内に配置します。
- [Python セッション] フィールドは、[デフォルト] のままにします。
- [実行する関数の名前を入力します] フィールドに、「get_location」と入力します。
- [関数への引数] ドロップダウン リストで、[dRetrieveValue - ディクショナリ] を選択します。
-
[変数に出力を代入] ドロップダウン リストで、[sLocation - 文字列] を選択します。
-
[アクション] ウィンドウで、[メッセージ ボックス] をクリックし、[ループ] アクション内に配置します。
-
[表示するメッセージを入力] フィールドに、次を入力します。
Full Name: $sFullName$ Location: $sLocation$
-
[メッセージ ボックスを閉じる秒数] > [秒] を選択し、「5」と入力します。
-
[表示するメッセージを入力] フィールドに、次を入力します。
-
[アクション] ウィンドウで、[Python スクリプト] > [閉じる] の順にクリックし、[ループ] アクション外に配置します。
-
[Python セッション] フィールドは、[デフォルト] のままにします。
-
[Python セッション] フィールドは、[デフォルト] のままにします。
-
[保存] をクリックして
Bot
を保存し、[実行] をクリックします。
Bot が起動し、5 つの完全なユーザー名と場所をそれぞれ約 5 秒間表示し、その後、実行が完了します。
Bot エラー メッセージが表示された場合は、解決策として次のセクションを参照してください。「Getting Bot Error while executing Python Script/Function (A-People login required)」、「Getting Bot Error or True value in message box while executing Python Script (A-People login required)」、「An unexpected error occurred while executing Python Script command; Error code: bot.execution.error (A-People login required)」。