コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

【2023/09/25Ver】Power AutomateからGraph APIを実行する方法と一覧


スポンサードリンク

はじめに

8月のはじめあたりに、とうとうOffice 365 Groupsの「HTTP 要求を送信します」が削除され、後続の「HTTP 要求 V2 を送信する」のみが利用可能になりました。

これによって何が困るかといいますと、Power AutomateでのGraph API実行が制限されるようになりました。

こちらの公式ドキュメントにある通り、「HTTP 要求 V2 を送信する」では"/groups"セグメントしかサポートされていません。
それ以外のセグメントを指定してこちらのアクションでGraph APIを実行しようとするとエラーになります。

learn.microsoft.com

前まで利用可能であった「HTTP 要求を送信します」アクションはこのセグメント制限がなかったので、多くの方はこちらのアクションを利用してPower AutomateからGraph APIを実行していたかと思います。
* 正しくいうと「HTTP 要求を送信します」ですべてのGraph APIが実行できたわけではないですが

一応旧「HTTP 要求を送信します」を利用したい方向けに「HTTP 要求を送信します」のアクションを追加可能なJSON値を置いておきます。
これをコピーしてPower Automateで貼り付けて利用してください。
詳しいやり方はこちらの記事下部にあるGifを参照してください。

koruneko.hatenablog.com

ただしこのアクションの利用は既に非推奨となっていることにご注意ください。
もう一度いいますが、このアクションの利用は現在は非推奨です。

利用の際はその点ご留意の上自己責任でお願いします。

{"id":"022189c7-e71e-4b88-9e7e-b8cbf46bc368","brandColor":"#EB3C00","connectionReferences":{"shared_office365groups_1":{"connection":{"id":"/providers/Microsoft.PowerApps/apis/shared_office365groups/connections/shared-office365grou-6b56f974-29a6-4a98-93ff-092b9de4116e"}},"shared_office365groups":{"connection":{"id":"/new_sharedoffice365groups_149bb"}}},"connectorDisplayName":"Office 365 グループ","icon":"https://connectoricons-prod.azureedge.net/releases/v1.0.1654/1.0.1654.3410/office365groups/icon.png","isTrigger":false,"operationName":"HTTP_要求を送信します","operationDefinition":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_office365groups_1","operationId":"HttpRequest","apiId":"/providers/Microsoft.PowerApps/apis/shared_office365groups"},"parameters":{"Uri":"","Method":"","ContentType":"application/json"},"authentication":{"type":"Raw","value":"@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"}},"runAfter":{},"metadata":{"operationMetadataId":"16b6956c-8454-426e-8564-426e46fdde45"}}}

さて、今回は現時点でPower Automateから利用可能なGraph APIを実行可能なアクション一覧とそれで利用可能なGraph APIの例を紹介しようと思います。

標準コネクタで実行可能なアクション

Office 365 Users

こちらのアクションですね。

ドキュメントはこちら。

learn.microsoft.com

こちらにはUser情報に関するGraph APIを実行可能です。

Microsoft Graph REST API リクエストを作成し呼び出します。 次のセグメントがサポートされています: 第 1 セグメント: /me、/users/ 第 2 セグメント: messages、mailFolders、events、calendar、calendars、outlook、inferenceClassification。

第一セグメントとか第にセグメントといわれてもピンとこないかもしれませんが、

https://graph.microsoft.com/v1.0/me/messages

というURIがあった場合、

第一セグメント

me

第二セグメント

messages

となります。
つまり、

https://graph.microsoft.com/v1.0/

以降の"/"区切りの要素がセグメントといわれているわけですね。

余談ですが、"beta"でもOKです。

https://graph.microsoft.com/beta/

さて、利用可能なセグメントですがドキュメントでは

第一セグメント

  • me
  • users

第二セグメント

  • messages
  • mailFolders
  • events
  • calendar
  • calendars
  • outlook
  • inferenceClassification

となっています。

ここで注意が必要な点が、このアクションを用いてこれらのAPIを実施する際、第一セグメントと第二セグメントの両方の要素が指定されている必要があるということです。

例えば自分自身の情報を取得する、

https://graph.microsoft.com/v1.0/me

を実行すると以下のようなエラーが発生します。

URI path is not a valid Graph endpoint, path is neither absolute nor relative or resource/object is not supported for this connector. Resources: me,users Objects: messages,mailFolders,events,calendar,calendars,outlook,inferenceClassification. Uri: https://graph.microsoft.com/v1.0/me

この形式はサポートされていないということですね。

また、以下のような特定のUser Idを指定して実行した場合も失敗します。

https://graph.microsoft.com/v1.0/users/{user-id}

第一セグメント + 第二セグメントの指定が必須ということを覚えておきましょう。

それでは実行可能なGraph APIの例ですが以下のようなものが実行可能です。
(例で記載しているだけですべてを網羅しているわけではないです。)

自分自身の情報

https://graph.microsoft.com/v1.0/me/messages
https://graph.microsoft.com/v1.0/me/mailFolders

他ユーザの情報

https://graph.microsoft.com/v1.0/users/{user-id}/outlook
https://graph.microsoft.com/v1.0/users/{user-id}/events

* こちらはそのユーザの情報にアクセス可能な権限を設定する必要があります。

他にもこのようなAPIも実行することが可能です。

https://graph.microsoft.com/v1.0/me/messages/{message-id}

またもちろんGETだけでなくPOSTも実行することが可能です。

Office 365 Outlook

こちらのアクションですね。

ドキュメントはこちら。

learn.microsoft.com

Microsoft Graph REST API リクエストを作成し呼び出します。 次のセグメントがサポートされています: 第 1 セグメント: /me、/users/ 第 2 セグメント: messages、mailFolders、events、calendar、calendars、outlook、inferenceClassification。

Office 365 Usersと同じですね。

実行可能な要素がOutlookのアクションで取得可能な情報ですので、わかりやすくフローを作成するのであれば、こちらのアクションを利用したほうがいいのかな?

Office 365 Groups

こちらのアクションですね。

ドキュメントはこちら。

learn.microsoft.com

Microsoft Graph REST API リクエストを作成し呼び出します。 サポートされているセグメントが 1 つあります: /groups。

グループの情報を取得可能です。

こちらが基本形ですね。

https://graph.microsoft.com/v1.0/groups

Microsoft 365 グループ (別名統合グループ) のみを一覧表示するようなクエリパラメータを付与して実行することも可能です。

https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(c:c+eq+'Unified')

また、特定のグループのメンバーを表示するようなAPIも実行可能です。

https://graph.microsoft.com/v1.0/groups/{group-id}/members

Office 365 Group Mail

こちらのアクションですね。

ドキュメントはこちら。

learn.microsoft.com

Microsoft Graph REST API リクエストを作成し呼び出します。

セグメントの指定書いてないが!?

適当なGraph APIを実行してみると以下のようなエラーメッセージを確認することができます。

URI path is not a valid Graph endpoint, path is neither absolute nor relative or resource/object is not supported for this connector. Resources: groups Objects: messages,mailFolders,events,calendar,calendars,outlook,inferenceClassification. Uri: https://graph.microsoft.com/v1.0/me

どうやらOffice 365 Groupsよりもより厳しい制限での実行のようですね。

以下のようなグループ情報を取得するAPIを実行すると

https://graph.microsoft.com/v1.0/groups

以下のようにエラーになります。

URI path is not a valid Graph endpoint, path is neither absolute nor relative or resource/object is not supported for this connector. Resources: groups Objects: messages,mailFolders,events,calendar,calendars,outlook,inferenceClassification. Uri: https://graph.microsoft.com/v1.0/groups

以下のようなAPIが実行可能ですね。

https://graph.microsoft.com/v1.0/groups/{group-id}/calendar

以下のリソースは"/groups"では実施できないと思うのだが、どうやって実行するのだろうか。。。

  • messages
  • mailFolders
  • calendar
  • outlook
  • inferenceClassification

このアクションをわざわざ利用するケースはよくわからないなー。。。
Office 365 Groupsでよくないかな?

SharePoint

こちらは厳密にはGraph APIを実行するためのアクションではないのですが、一応紹介

こちらのアクションですね。

ドキュメントはこちら。

learn.microsoft.com

呼び出す SharePoint REST API を作成します。 注意 – このアクションでは、アクセスできるいずれの SharePoint REST API を実行します。 この機能を使うときは注意してください。

こちらのアクションはSharePoint REST APIを実行するためのアクションです。

learn.microsoft.com

以下のような形式ですね。

_api/site/

SharePoint REST APIの形式でGraph APIも実行することができます。

learn.microsoft.com

ドキュメントですと、"v2.0"と記載されていますが、少なくともPower Automateから実行する場合は"v2.1"かな?

以下のような形式ですね。

_api/v2.1/sites/root

プレミアムコネクタで実行可能なアクション

HTTP with Azure AD

こちらのアクションですね。

ドキュメントはこちら。

learn.microsoft.com

こちらのアクションであれば、このアクションを実行するユーザの権限に従ってGraph APIを実行可能です。

Graph APIを自由に実行したい場合はこちらのアクションを利用、つまりプレミアムコネクタを利用することになります。

HTTP

こちらのアクションですね。

こちらのアクションは組み込みアクションなのでドキュメントはないです(ないはず)。

こちらのコネクタは接続情報を持たないので、認証情報を作成してあげる必要があります。

認証情報の作成はこちらが参考になるかな?

koruneko.hatenablog.com

おわりに

公式ドキュメントに記載の以下リンク、軒並み死んでますね。

詳細情報: https://docs.microsoft.com/en-us/graph/use-the-api

正しくはこっち

https://learn.microsoft.com/en-us/graph/use-the-api

"。"までリンク扱いしちゃってますね。。。

漏れなどありましたらコメントお願いしますー


スポンサードリンク