PADでXML/JSON形式で取得したデータを利用する


Power Automate for DesktopでXML形式、もしくはJSON形式で取得したデータをループ処理で使用する場合に必要なアクションについて記載します。

WebAPIでデータを取得するとXML形式もしくはJSON形式でレコードが返ってくるので、PADでWebAPIと連携したフローを作成したい際に参考になるかと思います。
ただし、本記事ではPADでのWeb APIからデータを取得するためのTip'sは記載いたしません。そちらの情報をまず得たい方は以下の記事が分かりやすかったので参考にしてみてください。

1⃣XMLデータ形式の読み取り

概要

  1. レコードを複数回取得するには「XPath式を実行します」アクションでリスト化する
  2. リストのレコード数分ループするFor Eachアクション内でCurrentItemに対して「XML要素の値を取得します」を実行

サンプル

  • 以下のようなXML形式データがあったとすると
<?xml version="1.0" encoding="UTF-8"?>
<BankList>
    <Bank>
        <code>000000000901</code>
        <name>XXX銀行XXX営業部親口座</name>
    </Bank>
    <Bank>
        <code>00000000999</code>
        <name>XXX銀行XXX支店</name>
    </Bank>
</BankList>
  • アクション「ファイルからXMLを読み取ります」の戻り値(変数XmlDocumentに保存される値)は上記のXML形式のデー全てなので、値を取り出す必要があります。
  1. アクション「Xpath式を実行します」でレコードをリスト化。今回のXMLデータでは<Bank>~</Bank>で囲まれた値が1レコードとなります。

【結果】

ここで「Xpath式を実行します」の代わりに「XML要素の値を取得します」を実行すると戻り値はリストで返すことができないため1行目のレコードしか取得できません!

  1. For eachアクションで反復処理を1の手順で生成されたリストに設定。
  2. For eachアクション内では1つのレコードから更に使用する項目の値を取り出すためアクション「XML要素の値を取得します」を実行。

ここで「XML要素の値を取得します」の代わりに<Bank>~</Bank>に対して再度「Xpath式を実行します」を実行すると値だけではなく<code></code>も取れてきてしまいます。

最終的なフロー

参考


2⃣JSON形式のデータ読み取り

概要

  1. アクション「JSONをカスタムオブジェクトに変換」
  2. レコードをリスト形式で保存するため、 1の結果をアクション「変数の設定」に入れ込む
  3. For Eachアクションで2.で設定した変数分ループするように設定
  4. ループ内で、アクション「変数の設定」を使用し1つのレコードに対して項目と値のリストを生成
  5. 4で生成したリストから目的の項目を取り出す

上記手順はJSONの構造にもよるためJSONの取得結果を確認して少しずつフローを組むとよいです。

サンプル

  • 下記のようなJSON形式のデータがあったとします。
{
    "projects": [
        {
            "id": 101,
            "name": "name01",
            "identifier": "001",
            "description": "",
            "status": 1,
            "is_public": false,
            "inherit_members": false,
            "created_on": "2022-03-29T06:52:04Z",
            "updated_on": "2022-03-29T01:59:59Z"
        },
        {
            "id": 102,
            "name": "name02",
            "identifier": "rm0004289",
            "description": null,
            "parent": {
                "id": 2,
                "name": "parentname02"
            },
            "status": 1,
            "is_public": false,
            "inherit_members": true,
            "created_on": "2021-02-29T05:55:41Z",
            "updated_on": "2021-02-29T05:55:41Z"
        },
        ...
    ],
    "total_count": 45,
    "offset": 0,
    "limit": 25
}
  1. アクション「JSONをカスタムオブジェクトに変換」では下記のように結果がリスト型で保存されます。

  2. 使用したいレコードのリストはJsonAsCustomObjectのprojectsプロパティの中にあるのでアクション「変数の設定」でリストを生成。

  3. For Eachアクションで2.で設定した変数分ループするように設定

  4. ループ内で、アクション「変数の設定」を使用し1つのレコードに対して項目と値のリストを生成

  5. 4で生成したリスト型変数から使用したい項目を指定して取り出す

最終的なフロー

参考


以上です。