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 パスの書き方をしっかり理解しておくとデータ操作で悩むことが少なくなりそうですね♪
関連コース
- CI628-H Power Automate クラウド フロー 基礎
クラウド フローの基本的な概念、構築手順を習得いただけます。日常的な業務に沿った Excel 操作やメール操作を中心としたシナリオを実習の題材とし、クラウド フローの基本操作を習得し、自部門の業務を効率化するためのフローを自力で構築できるようになることをめざします。 - CI618-H Power Automate クラウド フロー 実践
Power Automate の基本操作を習得した方を対象に、関数を用いた数式記述、繰り返し処理、JSON データ処理、さらに安定したフローを構築するためのエラーハンドリング手法など、Power Automate の応用力を高めるために必要なスキル習得をめざします。 - CI627-H Power Automate for desktop による自動化
Power Automate for desktop の利用方法について、基本的な UI 操作の自動化、条件分岐やループ処理などの制御構造、ファイル操作、Excel 連携など、業務現場で頻出するシナリオを題材に、ローカル環境での反復作業を自動化するフローを、自ら設計・構築できるスキルの習得をめざします。 - CI626-H Microsoft 365 – Office スクリプトと Excel によるデータ活用
Power Query を利用したデータの取り込みや加工、Power Pivot による高度なデータ モデルの構築と分析手法を学びます。また Office スクリプトを利用することで、Excel 内で行うルーチン業務をスクリプト化して自動化し、業務の効率化と標準化を実現する方法も解説します。