Power Automate でプレミアムコネクタなしでGraph APIを利用する

# はじめに

通常、Power Automate で Graph API を実行するには、プレミアムコネクタを利用する必要があります。
プレミアムコネクタは、有償ライセンスで利用可能となっており、Microsort 365 plan（for 365） の範囲では利用できません。

しかし、 **Graph API の一部機能については、無償ライセンスでの利用が可能** です。

その方法を記載します。

# 謝辞

紹介する方法は、[Microsoft MVPのHiroさん](https://twitter.com/mofumofu_dance) による記事に記載された方法です。

https://mofumofupower.hatenablog.com/entry/mention_teams_channel

さらに、[Microsoft MVPのPaulieさん](https://twitter.com/paulie_m) により発見された手法とのことです。

https://youtu.be/AA-D4lgjR3o

いつも有益かつ貴重な情報をありがとうございます



# 概要

Power Automate から Graph API を利用する方法は３パターンです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/646050d7-caf2-2f2f-e59a-76777204bbd4.png)

**1. パターン１**
　アプリケーションのアクセス許可
　Azureでアプリを登録 ⇒ アプリにアクセス許可を付与 ⇒ Power AutomateでGraph APIを実行（`HTTP`アクション）

**2. パターン２**
　委任されたアクセス許可（強い特権を必要とする場合）
　Azureでアプリを登録 ⇒ アプリにアクセス許可を付与 ⇒ Power Automateでアクセストークンを取得しGraph APIを実行（`HTTP`アクション）

:::note info
**パターン２**の実装方法は以下を参照ください
:::

https://qiita.com/MiyakeMito/items/a768841d76d22544a4c6

**3. パターン３**
　委任されたアクセス許可（強い特権を必要としない場合）
　Power AutomateでGraph APIを実行（`HTTP要求を呼び出します`アクション）

　**この パターン３が、プレミアムコネクタなしでの実行可能です**

フローにするとこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/9415caef-ba04-bb70-1565-7479423f5da7.png)


# 注意

今回紹介するアクションはプレビュー段階です。
今後、利用できなくなる可能性があります。

# 実現方法


上記の通り、`パターン３`は、[HTTP with Azure ADコ]ネクタの`[HTTP要求を呼び出します]`アクション を利用しますが、これはプレミアムコネクタです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/8c27dc5e-b96c-4a92-0ec7-82f081d044b2.png)

この`[HTTP要求を呼び出します]`アクションと同等の機能を持つ、[Office 365 Groups]コネクタの`[HTTP 要求を送信します（プレビュー）]`アクションは、プレミアムアクションではないのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/bba886ef-806d-ca33-2b6e-152eccb021e8.png)

各項目の設定値です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/022b3f71-9c28-2987-0b43-a6199e7cdea3.png)

例)チームを作成する場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/26091db1-394a-b6ca-8bdc-f847d39fea35.png)


https://docs.microsoft.com/ja-jp/graph/api/team-post?view=graph-rest-1.0&tabs=http

:::note warn
GraphエンドポイントでないURIを指定するとエラーとなります。
このアクションはGraph API専用ということです。
:::

# 権限スコープ

この[Office 365 Groups]コネクタの`[HTTP 要求を送信します（プレビュー）]`アクションは、ある程度の権限を保持していますが、その権限スコープは公開されていません。
よって、大雑把ですが実行可能なGraph API リソースについて調べてみました。

全体的に、データの参照は可能、操作は不可なものが多い印象です。

Power Automate の標準コネクタで実現できる事は多いですから、上手く使い分けてください。

 |リソース |URI |操作 |me |Users |
|:-----------|:------------|:------------|:------------:|:------------:|
 |ユーザー |users |ユーザー情報取得（他人も） |〇 |〇 |
 | | |情報更新 |× |× |
 | | |パスワード変更 |× |× |
 | | |差分を取得する |〇 |〇 |
 |組織 |directory |ライセンス割り当て |× |× |
 | | |削除済みオブジェクトの取得 |× |× |
 | | |ゴミ箱から削除 |× |× |
 | | |ゴミ箱から復元 |× |× |
 |グループ |groups |ユーザーがダイレクト メンバーになっているグループ、ディレクトリ ロール、管理単位を取得 |〇 |〇 |
 | | |追加・更新・削除 |〇 |－ |
 | | |メンバーの追加・削除 |〇 |－ |
 |Office Graph分析情報  |insights |ユーザーと共有されるドキュメントの一覧を含む計算された分析情報 |〇 |× |
 | | |人気上昇中 |〇 |〇 |
 | | |ユーザーが表示または変更したドキュメント |〇 |〇 |
 |メッセージ |message |メールボックス内のメッセージを取得 |〇 |〇 |
 | | |メールの送信 |〇 |〇 |
 | | |ユーザーの受信トレイに定義されているすべての messageRule オブジェクト |〇 |× |
 |カレンダー |calendar |予定の取得 |〇 |〇 |
 | |event |イベントの作成 |× |× |
 |Outlookの設定 |mailboxSettings |メールボックスの設定を取得 |〇 |× |
 | | |メールボックスの設定を更新 |× |× |
 |Todo |todo |To-doタスクリスト取得 |〇 |× |
 | | |To-doタスクリスト作成 |〇 |× |
 |セキュリティ |security |アラートの取得 |× |－ |
 | |security |セキュリティスコア取得 |× |－ |
 | |informationProtection |脅威評価取得 |× |－ |
 |連絡先 |contacts |連絡先の取得 |〇 |× |
 | | |連絡先の作成 |〇 |× |
 |委任された権限の付与 |oauth2PermissionGrants |oauth2PermissionGrants を一覧表示する |× |× |
 |Onenote |onenote |作成 |× |× |
 | | |取得 |× |× |
 |OneDrive |drive |OneDriveを取得する |〇 |× |
 |SharaPoint |sites |サイトを取得する（rootサイト） |〇 |－ |
 | | |リストの情報を取得 |〇 |－ |
 | | |リストの作成・更新・削除 |× |－ |
 |Teams |teams |チームの作成/編集 |〇 |－ |
 | | |チームの削除（グループ削除） |〇 |－ |
 | | |所属チームの一覧取得 |〇 |〇 |
 | | |チームをアーカイブ |〇 |－ |
 | | |メンバーの操作 |〇 |－ |
 | | |チャネルの一覧取得 |〇 |－ |
 | | |チャネルの作成・削除 |〇 |－ |
 | |chats |メッセージの取得 |× |× |

# まとめ

2022年5月現在、[Office 365 Groups]コネクタの`[HTTP 要求を送信します（プレビュー）]`アクションを利用すると、Power Automate からプレミアムコネクタなしで Graph API を実行です。
このアクションはアクセス許可を有していますが、その権限スコープは公開されていません。

手軽にGraph APIを実行する際に、ご活用ください。