今回はPower AutomateからMicrosoft Graph APIを呼び出す方法を説明します。
Power AutomateからMicrosoft Graph APIを呼び出すためにはプレミアムコネクタを使う必要があるため、下記のいずれかのライセンスが必要となります。
- Power Automate per user
- Power Automate per flow
- Power Automate per user with attended RPA
使用するAPIのアクセス許可によって使うプレミアムコネクタが異なります。
- 委任されたアクセス許可:HTTP with Azure ADコネクタ
- アプリケーションのアクセス許可:HTTPコネクタ
それぞれのコネクタの使い方をついて、説明します。
HTTP with Azure ADコネクタを使用する
フローの設定
作成するフローは何でもいいのですが、今回は簡単に実行できるインスタントクラウドフローから作成します。
1.Power Automate画面から「マイフロー」>「新しいフロー」>「インスタンスクラウドフロー」を選択する。
2.「フロー名」に適当な名前を設定し、「手動でフローをトリガーします」を選択して、「作成」ボタンを押下する。
3.フローの編集画面に遷移するので、「新しいステップ」を押下する。
4.「操作を選択してください」でテキストボックスに"HTTP"を入力し、「プレミアム」を選択した際に表示される「HTTP with Azure AD」コネクタを選択する。
5.「HTTP with Azure ADコネクタ」内の「HTTP要求を呼び出します」アクションを選択する。
6.本コネクタを初めて使用する場合、接続を作成する必要がある。「Base Resource URL」と「Azure AD Resource URI」の両方に以下のURLを設定し、「サインイン」ボタンを押下する。
7.認証を求められるので、Graph APIを実行したいユーザーでサインインする。
8.「HTTP要求を呼び出します」アクションで下記の設定を入力して、保存する。
方法:GET
要求のURL:https://graph.microsoft.com/v1.0/me
ヘッダー:なし
要求の本文:なし
ここまででフローの設定が完了となります。
次はこのフローを実行して、Microsoft Graph APIの実行結果を確認してみましょう。
フローの実行
1.フローの編集画面から「テスト」を押下し、「手動」ラジオボタンを選択し、「テスト」ボタンを押下する。
2.フローの実行で「続行」ボタンを押下し、「フローの実行」ボタンを押下する。
3.「完了」ボタンを押下し、フローの実行履歴を確認する。
サインインしたユーザー情報が取得できることを確認できました。
このようにHTTP with Azure ADコネクタを使うことで簡単にMicrosoft Graph APIを呼び出すことができました。
※注記
必要なアクセス許可の種類によっては、HTTP with Azure AD コネクタでは API が実行できない場合があります。
HTTP with Azure AD コネクタで実行できる権限スコープの一覧は現時点では公開されておりませんが、フローを実行した際に権限エラーが発生する場合、HTTP with Azure AD コネクタでは実行できない可能性がございますので、HTTP コネクタでの実行をお試しください。
HTTPコネクタを使用する
HTTPコネクタを使用する場合、事前にAzure ADアプリの登録が必要となります。
今回利用するアクセス許可は下記とします。
- アクセス許可の種類:アプリケーション
- アクセス許可:User.Read.All
※ Azure ADアプリ登録の詳細な手順は「Microsoft Graph の認証方法 - JBS Tech Blog」を参考にしてください。今回はシークレットを使用します。
フローの設定
今回も簡単に実行できるインスタントクラウドフローから作成します。
1.Power Automate画面から「マイフロー」>「新しいフロー」>「インスタンスクラウドフロー」を選択する。
2.「フロー名」に適当な名前を設定し、「手動でフローをトリガーします」を選択して、「作成」ボタンを押下する。
3.フローの編集画面に遷移するので、
4.「新しいステップ」を押下する。
5.「操作を選択してください」でテキストボックスに"HTTP"を入力し、「プレミアム」を選択した際に表示される「HTTP」コネクタを選択する。
6.「HTTP」コネクタ内の「HTTP」アクションを選択する。
7.「HTTP」アクション内で下記の設定を入力し、保存する。
- 方法:GET
- URI:https://graph.microsoft.com/v1.0/users/"UPN変数"
- ヘッダー:なし
- クエリ:なし
- 本文:なし
- Cookie:なし
- 認証:Active Directory OAuth
- 機関:なし
- テナント:<Azure AD アプリのテナントID>
- 対象ユーザー:https://graph.microsoft.com
- クライアントID:<Azure ADアプリのクライアントID>
- 資格情報の種類:シークレット
- シークレット:<Azure ADアプリのシークレット>
ここまででフローの設定が完了となります。
次はこのフローを実行して、Microsoft Graph APIの実行結果を確認してみましょう。
フローの実行
1.フローの編集画面から「テスト」を押下し、「手動」ラジオボタンを選択し、「テスト」ボタンを押下する。
2.フローの実行で「UPN」テキストボックスにユーザー情報を取得したいユーザーのUPNを設定し、「フローの実行」ボタンを押下する。
3.「完了」ボタンを押下し、フローの実行履歴を確認する。
指定したユーザー情報が取得できることを確認できました。
HTTPコネクタでも簡単にMicrosoft Graph APIを呼び出すことができました。
取得したデータの活用
Microsoft Graph APIで取得したデータはJSON形式のため、このままでは利用できません。
Power Automateには「JSONの解析」アクションがあり、このアクションを使うことで、JSONから変数に変換できるので、取得したデータを利用することができます。
フローの設定
1.フローの編集画面に遷移し、「新しいステップ」を押下する。
2.「操作を選択してください」でテキストボックスに"JSON"を入力し、「JSONの解析」アクションを選択する。
3.「JSONの解析」アクションの「サンプルから生成」を押下する。
4.サンプルJSONペイロードの挿入が表示されるので、前回のフローの実行結果からHTTPアクションの出力の本文をコピーして、貼り付けて、「完了」ボタンを押下する。
※この操作で本文のスキーマを生成してくれます。
5.「JSONの解析」アクションの下記の設定を入力する。
- コンテンツ:<「HTTP」アクションの本文>
ここまででMicrosoft Graph APIの出力結果を変数化する対応が終わりました。
このままだと変数化しただけなので、取得したデータをTeamsに出力するアクションを加えたいと思います。
6.「新しいステップ」を押下する。
7.「操作を選択してください」でテキストボックスに"Teams"を入力し、「チャットまたはチャネルでメッセージを投稿する」アクションを選択する。
8.「チャットまたはチャネルでメッセージを投稿する」アクションで下記の設定を入力し、保存する。
投稿者:フローボット
投稿先:Chat with Flow bot
Recipient:<メンション先のユーザー>
Message:<JSONの解析から生成された変数を指定して自由にメッセージを設定してください>
フローの実行
1.フローの編集画面から「テスト」を押下し、「手動」ラジオボタンを選択し、「テスト」ボタンを押下する。
2.フローの実行で「UPN」テキストボックスにユーザー情報を取得したいユーザーのUPNを設定し、「フローの実行」ボタンを押下する。
3.「完了」ボタンを押下し、フローの実行履歴を確認する。
4.Teamsを起動して、ボットからのメッセージを確認する。
※注記
「JSONの解析」アクションでエラーが発生することがあります。
「Invalid type. Expected String but got Null.」というメッセージの場合、値がNullの場合にエラーになります。
スキーマの定義を
"givenName": {
"type": "string"
},
から
"givenName": {},
もしくは
"givenName": {
"type": ["string","null"]
},
に変更することで回避することが可能です。
まとめ
Power AutomateからMicrosoft Graph APIを呼び出す方法について、説明しました。
プレミアムコネクタのため有料ライセンスが必要となりますが、簡単に呼び出すことができました。
Power AutomateのコネクタにはMicrosoft 365上のユーザーやグループなどを操作をするコネクタが豊富に用意されていますが、細かいところまで網羅されていないので、必要に応じて、Mirosoft Graph APIを呼び出して使ってみてください。