Python を使用した JSON レスポンスの解析

Automation 360 の Python スクリプトを使用して、Bot をビルドする Python 関数を実行します。Python 関数を使用して、REST Web サービスの GET リクエストからの JSON レスポンスを解析します。

前提条件

Bot をビルドするには、以下があることを確認します。

  • Python プログラミング言語に関する基本的な知識。
  • Automation Anywhere Bot の作成に関する基本的な経験。
  • Python 3 をダウンロードしてインストールします。

    Python のダウンロード

    次のいずれかを実行します。

    • Python のインストール時には、必ず、Python のインストール中に [Python x.xx をパスに追加] を選択してください。
      Python のインストール
    • 環境変数にパスを追加します。

手順

  1. Control Room にログインします。
  2. 左側のペインで [オートメーション] をクリックします。
    使用可能な Bot とフォームのリストが表示されます。
  3. [Bot を作成] をクリックします。
    Bot の作成
  4. [名前] フィールドに「PythonTutorial」と入力します。
  5. [作成と編集] をクリックします。
  6. [アクション] ウィンドウで [変数] をクリックして、次の新しい変数を作成します。
    1. 名前: dResponse[タイプ] > [ディクショナリ] および [サブタイプ] > [文字列]
    2. 名前: dRetrieveValue[タイプ] > [ディクショナリ] および [サブタイプ] > [任意]
    3. 名前: dResponseBody[タイプ] > [文字列]
    4. 名前: sFullName[タイプ] > [文字列]
    5. 名前: sLocation[タイプ] > [文字列]
    6. 名前: sTotalUserCount[タイプ] > [文字列]
    7. 名前: nTotalUserCount[タイプ] > [数字]
    8. 名前: nCurrentUser[タイプ] > [数字]
    9. 名前: sCurrentUser[タイプ] > [文字列]
    10. 名前: prompt-assignment[タイプ] > [文字列]
  7. [アクション] ウィンドウで、[REST Web サービス] > [GET メソッド] の順に選択し、Bot フローの [開始] の下に配置します。
    1. [URI] フィールドに、「https://randomuser.me/api/?results=5&inc=name,email,location&nat=us」と入力します。
      これは、呼び出しを行うアプリケーションにランダムなユーザーの詳細を返すサンプル API です。
    2. [認証モード] ドロップダウン リストで、[認証なし] を選択します。

      python-rest-sample
    3. [変数に出力を代入] ドロップダウン リストで、[dResponse - 文字列のディクショナリ] を選択します。
  8. [アクション] ウィンドウで、[文字列] > [代入] アクションの順にクリックし、[REST Web サービス] アクションの下のキャンバスにドラッグします。
    1. [元の文字列変数/値を選択] フィールドに、「$dResponse{Body}$」と入力します。

      python-string-assign
    2. [ターゲットの文字列変数を選択] ボックスの一覧で、[dResponseBody - 文字列] をクリックします。
  9. [アクション] ペインで [Python スクリプト] > [開く] をクリックし、[文字列] > [代入] アクションの下のキャンバスにドラッグします。
    1. [Python] フィールドで、[手動インポート] を選択します。

      python-script-open
    2. [ここにスクリプトを入力します] フィールドに、次のコードをコピーして貼り付けます。
      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']
    3. [Python ランタイム バージョン] フィールドは、デフォルト値 3 のままにします。
  10. [アクション] ウィンドウで、[Python スクリプト] > [関数を実行] をクリックし、[Python スクリプト] > [開く] アクションの下のキャンバスにドラッグします。
    1. [Python セッション] フィールドは、[デフォルト] のままにします。
    2. [実行する関数の名前を入力します] フィールドに、「get_node_count」と入力します。
    3. [関数への引数] ドロップダウン リストで、[dResponseBody - 文字列] を選択します。

      python-execute
    4. [変数に出力を代入] ドロップダウン リストで、[sTotalUserCount - 文字列] を選択します。
  11. [アクション] ウィンドウで [ディクショナリ] > [挿入] をクリックし、[Python スクリプト] > [開く] アクションの下のキャンバスにドラッグします。
    1. [ディクショナリ変数] フィールドで、[dRetrieveValue - ディクショナリ] を選択します。
    2. [このキーに関連付ける] フィールドに、「response」と入力します。
    3. [新しい値] ドロップダウン リストで、[dResponseBody - 文字列] を選択します。
    4. [変数に前の値を代入] ドロップダウン リストで、[prompt-assignment - 文字列] を選択します。

      python-dict-open
  12. [アクション] ウィンドウで、[文字列] > [数値に変換] をクリックし、[ディクショナリ] > [挿入] アクションの下のキャンバスにドラッグします。
    1. [文字列を入力] フィールドに、「$sTotalUserCount$」と入力します。
    2. [変数に出力を代入] ドロップダウン リストで、[nTotalUserCount - 数字] を選択します。
      python-string-tonum
  13. [アクション] ウィンドウで、[ループ] > [ループ] の順にクリックします。
    1. [ループ タイプ] > [反復子] で、ドロップダウン リストから [n 回] を選択します。
    2. [回数] フィールドに、「$nTotalUserCount$」と入力します。
    3. [現在の値を変数に代入] ドロップダウン リストで、[nCurrentUser - 数字] を選択します。
      python-loop
  14. [アクション] ウィンドウで、[数字] をクリックし、[デクリメント] を選択して、[ループ] アクション内に配置します。
    1. [数字を入力] フィールドに、「$nCurrentUser$」と入力します。
    2. [デクリメント値を入力] フィールドに、「1」と入力します。
    3. [変数に出力を代入] ドロップダウン リストで、[nCurrentUser - 数字] を選択します。
      python-num-decrement
  15. [アクション] ウィンドウで、[数字] をクリックし、[文字列に変換] を選択して、[数字] > [デクリメント] の下の [ループ] アクション内に配置します。
    1. [数字を入力] フィールドに、「$nCurrentUser$」と入力します。
    2. [小数点以下の桁数を入力] フィールドに、「0」と入力します。
    3. [変数に出力を代入] ドロップダウン リストで、[sCurrentUser - 文字列] を選択します。
      python-num-tostring
  16. [アクション] ウィンドウで、[ディクショナリ] > [挿入] の順にクリックし、[ループ] アクション内に配置します。
    1. [ディクショナリ変数] フィールドで、[dRetrieveValue - ディクショナリ] を選択します。
    2. [このキーに関連付ける] フィールドに、「count」と入力します。
    3. [新しい値] ドロップダウン リストで、[sCurrentUser - 文字列] を選択します。
    4. [変数に前の値を代入] ドロップダウン リストで、[prompt-assignment - 文字列] を選択します。
      python-dict-put
  17. [アクション] ウィンドウで、[Python スクリプト] > [関数を実行] の順にクリックし、[ループ] アクション内に配置します。
    1. [Python セッション] フィールドは、[デフォルト] のままにします。
    2. [実行する関数の名前を入力します] フィールドに、「get_full_name」と入力します。
    3. [関数への引数] ドロップダウン リストで、[dRetrieveValue - ディクショナリ] を選択します。
    4. [変数に出力を代入] ドロップダウン リストで、[sFullName - 文字列] を選択します。
      python-script-execute
  18. [アクション] ウィンドウで、[Python スクリプト] > [関数を実行] の順にクリックし、[ループ] アクション内に配置します。
    1. [Python セッション] フィールドは、[デフォルト] のままにします。
    2. [実行する関数の名前を入力します] フィールドに、「get_location」と入力します。
    3. [関数への引数] ドロップダウン リストで、[dRetrieveValue - ディクショナリ] を選択します。
    4. [変数に出力を代入] ドロップダウン リストで、[sLocation - 文字列] を選択します。
      python-script-execute-location
  19. [アクション] ウィンドウで、[メッセージ ボックス] をクリックし、[ループ] アクション内に配置します。
    1. [表示するメッセージを入力] フィールドに、次を入力します。
      Full Name: $sFullName$ Location: $sLocation$
    2. [メッセージ ボックスを閉じる秒数] > [秒] を選択し、「5」と入力します。
      python msgbox
  20. [アクション] ウィンドウで、[Python スクリプト] > [閉じる] の順にクリックし、[ループ] アクション外に配置します。
    1. [Python セッション] フィールドは、[デフォルト] のままにします。
      python close
  21. [保存] をクリックして Bot を保存し、[実行] をクリックします。
    Bot が起動し、5 つの完全なユーザー名と場所をそれぞれ約 5 秒間表示し、その後、実行が完了します。

Bot エラー メッセージが表示された場合は、解決策として次のセクションを参照してください。「Python スクリプト/関数の実行中の Bot エラーの発生 (A-People のログインが必要)」、「Python スクリプトの実行中に Bot エラーが発生するか、メッセージ ボックスに True の値が表示される (A-People のログインが必要)」、「Python Script コマンドの実行中に予期せぬエラーが発生した。エラーコード: bot.execution.error (A-People のログインが必要)」。