4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-29

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形式のデータ全てなので、値を取り出す必要があります。

① アクション「Xpath式を実行します」でレコードをリスト化。今回のXMLデータでは<Bank>~</Bank>で囲まれた値が1レコードとなります。
【結果】xml1.png

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

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

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

最終的なフロー

xml4.png

参考


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をカスタムオブジェクトに変換」では下記のように結果がリスト型で保存されます。
    JSON2.png

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

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

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

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

最終的なフロー

JSON5.png

参考


以上です。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?