Power Automate で Microsoft Graph REST API の JSON レスポンスを扱いやすくする

この記事の内容

  • Power Automate の「JSON の解析」アクションを使って Graph API のレスポンスを構造化する方法を解説します
  • サンプル JSON からスキーマを自動生成する手順を紹介します
  • 単一オブジェクトと複数オブジェクトそれぞれのパース手順を説明します
  • スキーマの自動生成時に発生しやすい null 関連エラーとその対処法を紹介します
  • パース後のデータをフロー内で自由に活用できるようにするところまで解説します

はじめに

この記事は、Power Automate で Microsoft Graph REST API を呼び出す方法を解説した前回の続きです。前回は HTTP アクションを使って Graph API のエンドポイントを叩き、JSON 形式のレスポンスを受け取るところまで行いました。今回はその結果を Power Automate のフロー内で扱いやすい形にする、つまり JSON のパース(解析) を行う方法を解説します。


JSON の解析アクションを追加する

Graph API から返ってくるレスポンスは JSON 形式です。そのままでは後続のアクションで個々のプロパティを取り出しにくいため、Power Automate の組み込みアクション「JSON の解析」を使います。

手順は以下のとおりです。

  1. HTTP アクションのあとに新しいステップを追加します
  2. 「データ操作」 の中から 「JSON の解析」 を選択します
  3. 「コンテンツ」に前のステップ(HTTP アクション)の 「本文(応答の内容)」 を指定します

スキーマをサンプルから自動生成する

「JSON の解析」アクションでは、解析対象の JSON がどのような構造をしているかをスキーマとして指定する必要があります。スキーマを手書きするのは難しいため、「サンプルから生成」 機能を使うのが簡単です。

手順は以下のとおりです。

  1. 「スキーマ」欄の下にある 「サンプルのペイロードを使用してスキーマを生成する」 をクリックします
  2. 実際にフローを実行した際の JSON レスポンス、または Graph エクスプローラーで取得した JSON をコピーして貼り付けます
  3. 「完了」 をクリックすると、スキーマが自動的に生成されます

これにより、JSON 内のどのようなプロパティが存在するかを Power Automate が認識し、後続のアクションでそれらのプロパティを直接参照できるようになります。


解析結果を確認する(単一オブジェクトの場合)

まず、自分のプロフィール情報を取得するエンドポイント(/v1.0/me)を例に確認します。このエンドポイントは単一のオブジェクトを返します。

JSON の解析後に「データ操作 → 作成」アクションを追加し、入力欄で解析結果のプロパティを参照します。たとえば displayName(表示名)を選択すると、フロー実行後にその値が正しく取得できていることを確認できます。

givenName(名)、mail(メールアドレス)、preferredLanguage(優先言語)なども同様にフロー内で自由に使用できるようになります。


複数オブジェクトを返す場合の扱い

次に、組織内の全グループを取得するエンドポイント(/v1.0/groups)のように、複数のオブジェクトが配列として返ってくる場合 を見ていきます。

この場合も基本的な手順は同じです。

  1. HTTP アクションのエンドポイントをグループ一覧取得用に変更します
  2. 「JSON の解析」アクションで、グループ一覧を返すサンプル JSON をもとにスキーマを再生成します

サンプル JSON を貼り付けて「完了」をクリックすると、スキーマが配列構造(array 型)として正しく認識されます。

後続の「作成」アクションで displayName などのプロパティを選択すると、Power Automate が自動的に 「Apply to each(それぞれに適用)」 を追加し、配列の各要素をループ処理してくれます。特に意識しなくても複数のオブジェクトを扱えるのが便利なポイントです。


スキーマの自動生成で発生しやすいエラーと対処法

複数のオブジェクトを扱う際、スキーマの自動生成がうまくいかない場合があります。よくある原因が「null 値の混在」です。

エラーの内容

フローを実行すると、「JSON の解析」ステップで次のようなエラーが発生することがあります。

InvalidType:Expected"string"butgot"Null"

原因

スキーマ自動生成時に使用したサンプル JSON では mail プロパティに文字列が入っていたため、スキーマが "string" 型として定義されました。しかし実際のデータでは mailnull のオブジェクトが存在し、型の不一致でエラーになります。

対処法

スキーマを手動で修正し、null も許容する型定義に変更します。対象のプロパティの型定義を以下のように修正します。

修正前(文字列のみ許容):

"mail": {
  "type": "string"
}

修正後(null も許容):

"mail": {
  "type": ["string", "null"]
}

この修正により、値が null のプロパティが含まれていてもエラーなく処理できるようになります。複数のオブジェクトが返ってくる場合は、プロパティによって値が入っていないものがあることを想定してスキーマを確認するようにしましょう。


まとめ

今回は Power Automate で Microsoft Graph REST API から取得した JSON レスポンスを扱いやすくする方法を解説しました。

  • 「JSON の解析」 アクションを使うことで、JSON のプロパティをフロー内で直接参照できるようになります
  • スキーマは 「サンプルから生成」 機能を使うと簡単に作成できます
  • 複数のオブジェクトが返ってくる場合も、解析後のプロパティを選択するだけで Power Automate が自動的にループ処理を追加してくれます
  • null 値が含まれる場合はスキーマの型定義を ["string", "null"] のように修正することで対処できます

これにより、Graph API で取得したデータを Power Automate のフロー内で自由に活用できるようになります。Microsoft 365 まわりのさまざまな処理を自動化する際にぜひ活用してください。