はじめに
8月のはじめあたりに、とうとうOffice 365 Groupsの「HTTP 要求を送信します」が削除され、後続の「HTTP 要求 V2 を送信する」のみが利用可能になりました。
これによって何が困るかといいますと、Power AutomateでのGraph API実行が制限されるようになりました。
こちらの公式ドキュメントにある通り、「HTTP 要求 V2 を送信する」では"/groups"セグメントしかサポートされていません。
それ以外のセグメントを指定してこちらのアクションでGraph APIを実行しようとするとエラーになります。
前まで利用可能であった「HTTP 要求を送信します」アクションはこのセグメント制限がなかったので、多くの方はこちらのアクションを利用してPower AutomateからGraph APIを実行していたかと思います。
* 正しくいうと「HTTP 要求を送信します」ですべてのGraph APIが実行できたわけではないですが
一応旧「HTTP 要求を送信します」を利用したい方向けに「HTTP 要求を送信します」のアクションを追加可能なJSON値を置いておきます。
これをコピーしてPower Automateで貼り付けて利用してください。
詳しいやり方はこちらの記事下部にあるGifを参照してください。
ただしこのアクションの利用は既に非推奨となっていることにご注意ください。
もう一度いいますが、このアクションの利用は現在は非推奨です。
利用の際はその点ご留意の上自己責任でお願いします。
{"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
こちらのアクションですね。
ドキュメントはこちら。
こちらには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
こちらのアクションですね。
ドキュメントはこちら。
Microsoft Graph REST API リクエストを作成し呼び出します。 次のセグメントがサポートされています: 第 1 セグメント: /me、/users/ 第 2 セグメント: messages、mailFolders、events、calendar、calendars、outlook、inferenceClassification。
Office 365 Usersと同じですね。
実行可能な要素がOutlookのアクションで取得可能な情報ですので、わかりやすくフローを作成するのであれば、こちらのアクションを利用したほうがいいのかな?
Office 365 Groups
こちらのアクションですね。
ドキュメントはこちら。
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
こちらのアクションですね。
ドキュメントはこちら。
セグメントの指定書いてないが!?
適当な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を実行するためのアクションではないのですが、一応紹介
こちらのアクションですね。
ドキュメントはこちら。
呼び出す SharePoint REST API を作成します。 注意 – このアクションでは、アクセスできるいずれの SharePoint REST API を実行します。 この機能を使うときは注意してください。
こちらのアクションはSharePoint REST APIを実行するためのアクションです。
以下のような形式ですね。
_api/site/
SharePoint REST APIの形式でGraph APIも実行することができます。
ドキュメントですと、"v2.0"と記載されていますが、少なくともPower Automateから実行する場合は"v2.1"かな?
以下のような形式ですね。
_api/v2.1/sites/root
プレミアムコネクタで実行可能なアクション
HTTP with Azure AD
こちらのアクションですね。
ドキュメントはこちら。
こちらのアクションであれば、このアクションを実行するユーザの権限に従ってGraph APIを実行可能です。
Graph APIを自由に実行したい場合はこちらのアクションを利用、つまりプレミアムコネクタを利用することになります。
HTTP
こちらのアクションですね。
こちらのアクションは組み込みアクションなのでドキュメントはないです(ないはず)。
こちらのコネクタは接続情報を持たないので、認証情報を作成してあげる必要があります。
認証情報の作成はこちらが参考になるかな?
おわりに
公式ドキュメントに記載の以下リンク、軒並み死んでますね。
正しくはこっち
https://learn.microsoft.com/en-us/graph/use-the-api
"。"までリンク扱いしちゃってますね。。。
漏れなどありましたらコメントお願いしますー