Power Automate で JSON 内の値を取得する方法
Power Automate を利用していて、特定の値を取得したいけれど動的なコンテンツが提供されず、うまく値を取り出すことが出来なくて困ってしまうことがあるかと思います。式で JSON データ内の値を取得する方法を知っておくとアクション数の削減につながることも期待できます。
今回は、SharePoint コネクターの “項目の取得” アクションから取得したものを例として、値の取得方法についてご紹介します。
テストで利用するリスト
以下の表にまとめたとおりの列構造としました。
列名 | 列タイプ | 備考 |
Title | 1行テキスト | |
SingleUser | ユーザー | |
MultiUser | ユーザー | 複数値も可 |
アクションの出力データ (JSON) 取得方法
フローを動かしてみて、実行結果の画面からアクション内の [未加工出力の表示] をクリックします。
出力される JSON と値の取得方法
① JSON の書式
JSON は、プロパティ名と値で構成されており、プロパティ名と値をコロンで区切って表現します。
{"プロパティ名":"値"}
1行テキストの Title 列は、プロパティ名の横にそのまま値が表示されていますが、ユーザー列の SinglUser 列は値の部分が入れ子の構造になっています。
さらに、ユーザー列で MultiUser 列は値の部分に “[ ]” があります。この表記が JSON の配列の表現方法になります。このように列の種類に応じて出力される値が異なっています。
② アクションで出力された JSON から値にアクセスするための書式
値にアクセスしたい場合、以下の3種類の記述方法が利用できます。
outputs('アクション名')['プロパティ名']
outputs('アクション名')?['プロパティ名']
outputs('アクション名').プロパティ名
③ 項目の取得アクションの出力データから値を取得
上記の書式に当てはめると、以下の様になります。2階層目以降のアクセス方法として、”/” 区切りも利用できます。
タイトル | outputs(‘項目の取得’)[‘body’][‘Title’] outputs(‘項目の取得’)?[‘body’]?[‘Title’] outputs(‘項目の取得’)[‘body/Title’] outputs(‘項目の取得’).body.Title |
SingleUser Email | outputs(‘項目の取得’)[‘body’][‘SingleUser’][‘Email’] outputs(‘項目の取得’)?[‘body’]?[‘SingleUser’]?[‘Email’] outputs(‘項目の取得’)[‘body/SingleUser/Email’] outputs(‘項目の取得’).body.SingleUser.Email |
MaltiUser Email1件目 | outputs(‘項目の取得’)[‘body’][‘MultiUser’][0][‘Email’] outputs(‘項目の取得’)?[‘body’]?[‘MultiUser’]?[0]?[‘Email’] |
MaltiUser Email2件目 | outputs(‘項目の取得’)[‘body’][‘MultiUser’][1][‘Email’] outputs(‘項目の取得’)?[‘body’]?[‘MultiUser’]?[1]?[‘Email’] |
④ (おまけ) MultiUser Email をセミコロン区切りで出力
最後に少しおまけという感じではありますが、、関数を利用して MultiUser Emailをセミコロン区切りにして出力する式を作成してみました。
JSON パスのみでは指定出来ないため、xml関数とxpath関数も組み合わせて行っています。
join(xpath(
上記の様に記述することで、ユーザー列からセミコロン区切りでメールアドレスが取得できます。
xml(json(concat('{"body":',outputs('項目の取得')['body'],'}'))),
'/body/MultiUser/Email/text()'
),
';')
xml に変換する際、xml にはルートタグに変換する文字が必要になるため、文字列連結させて作成しました。この様に処理することで、複数値も可のユーザー列から簡単にメールアドレスが取得でき、メール送信アクションの宛先に指定できますね♪
Power Automate では内部で JSON を用いてデータが処理されているため、JSON パスの書き方をしっかり理解しておくとデータ操作で悩むことが少なくなりそうですね♪
- CI615-H Power Automate 入門 – Excel 連携
Power Automate をこれからはじめる業務ユーザー向けの基礎コース。業務でよく利用する Excel での自動化を課題とした実習ベースで解説します。
- CI617-H Power Automate によるフロー作成
基本を理解した方がより上級者レベルへと進むためのステップアップコース。Microsoft 365 各製品との連携や、より高度な設定の理解をめざします。
- CI614-H SharePoint & Power Apps & Power Automate 実践ラボ
実際にアプリやフォームを作成する際によくある疑問点をあげつつ、実践的なテクニックや Tips を確認しながら一緒にアプリやフローを作成するラボを行う上級者向けの超実践コース