Power Automateの管理コネクタを試してみた。

Microsoft Power Automate Advent Calendar 2022
3日目を担当します小林です。
検証してみたら期待通りの動きではなかったために、ブログの内容を大幅に変更してお送りします😢

https://qiita.com/advent-calendar/2022/powerautomate




# 増え続けるソンビフロー🧟！
定期的な見直しをしていましたが、利用年数が長期に渡ると知らない間に謎の**ゾンビフロー**🧟がどんどん作成され、、、
結構把握できない状態になったりしていませんか？💦
キャァーーー！！！！！😱

そのようなことにならないように、CoE Starter Kitが提供されているのですが、今回は標準で使えるPower Automateの管理コネクタを試してみたお話です。

# Power Automateの管理コネクタ
まず最初にご説明したいのが、**Power Automateの管理に利用できるコネクタは2つあります**

<table>
<tr>
<td>
PowerAutomate管理

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/40fc5f0c-39be-f43c-d7c1-3002faa06470.png)
</td>
<td>
管理者向けPowerAutomate

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/27cb98ce-b787-622a-b523-9f81ecafd023.png)
</td>
</tr>
</table>


アイコン似てますよね、、、
よく見ると丸抜きのアイコンが「人」なのか「歯車」なのかの違いですが、
歯車アイコンの「管理者向けPowerAutomate」は、管理者特権で操作を実行する必要がある内容がこちらに纏められています。

具体的に、2つのコネクタで出来る機能を一覧にしてみました。

## PowerAutomate管理(Power Automate Management)

<table>
<tr>
<th>
コネクタを一覧表示する<br>
ListApis
</th>
<td>
指定された環境内で使用可能なすべてのコネクタを一覧表示します。 この一覧には、カスタム コネクタおよび組み込みコネクタが含まれます。
</td>
</tr>
<tr>
<th>
コネクタを取得する<br>
GetApi
</th>
<td>
<p>環境内で指定されたコネクタを取得します。</p>
</td>
</tr>
<tr>
<th>
コールバック URL の一覧<br>
ListCallbackUrl
</th>
<td>
<p>環境内で指定されたフローのコールバック URL の一覧です。</p>
</td>
</tr>
<tr>
<th>
フローの作成<br>
CreateFlow
</th>
<td>
<p>フローの作成</p>
</td>
</tr>
<tr>
<th>
フローの実行専用ユーザーを一覧表示する<br>
ListFlowUsers
</th>
<td>
<p>環境内で指定されたフローのすべての実行専用ユーザーを一覧表示します。</p>
</td>
</tr>
<tr>
<th>
フローの所有者を変更する<br>
ModifyFlowOwners
</th>
<td>
<p>環境内で指定されたフローの所有者を変更します。</p>
</td>
</tr>
<tr>
<th>
フローをオフにする<br>
StopFlow
</th>
<td>
<p>環境内で指定されたフローを停止します。</p>
</td>
</tr>
<tr>
<th>
フローをオンにする<br>
StartFlow
</th>
<td>
<p>環境内で指定されたフローを開始します。</p>
</td>
</tr>
<tr>
<th>
フローを再送信する<br>
ResubmitFlow
</th>
<td>
<p>環境内で指定されたフロー実行を再送信します。</p>
</td>
</tr>
<tr>
<th>
フローを削除する<br>
DeleteFlow
</th>
<td>
<p>環境内で指定されたフローを削除します</p>
</td>
</tr>
<tr>
<th>
フローを取得する<br>
GetFlow
</th>
<td>
<p>環境内で指定されたフローを取得します。</p>
</td>
</tr>
<tr>
<th>
フローを更新する<br>
UpdateFlow
</th>
<td>
<p>環境内で指定されたフローを更新します。</p>
</td>
</tr>
<tr>
<th>
フローを管理者として取得する<br>
AdminGetFlow
</th>
<td>
<p>管理者アクセス権のある環境から指定されたフローを取得します。</p>
</td>
</tr>
<tr>
<th>
フロー実行を取り消す<br>
CancelFlowRun
</th>
<td>
<p>フロー実行を取り消します。</p>
</td>
</tr>
<tr>
<th>
フロー所有者を一覧表示する<br>
ListFlowOwners
</th>
<td>
<p>環境内で指定されたフローのすべての所有者を一覧表示します。</p>
</td>
</tr>
<tr>
<th>
フロー所有者を管理者として変更する<br>
AdminModifyFlowOwners
</th>
<td>
<p>管理者アクセス権のある環境内で作成された特定のフローの所有者を変更します。</p>
</td>
</tr>
<tr>
<th>
削除されたフローを管理者として復元する<br>
AdminRestoreFlow
</th>
<td>
<p>管理者のアクセス権を持つ環境で、論理的に削除された指定のフローを復元します。</p>
</td>
</tr>
<tr>
<th>
実行専用ユーザーを変更する<br>
ModifyRunOnlyUsers
</th>
<td>
<p>環境内で指定されたフローの実行専用ユーザーを変更します。</p>
</td>
</tr>
<tr>
<th>
接続の作成<br>
CreateConnection
</th>
<td>
<p>環境内の特定のコネクタの接続を作成します。</p>
</td>
</tr>
<tr>
<th>
管理者としてフローを一覧表示する<br>
ListFlowsInEnvironment
</th>
<td>
<p>管理者アクセス権のある指定された環境内ですべてのフローを一覧表示します。</p>
</td>
</tr>
<tr>
<th>
自分のフローを一覧表示する<br>
ListMyFlows
</th>
<td>
<p>指定された境内で作成したすべてのフローを一覧表示します。</p>
</td>
</tr>
<tr>
<th>
自分の接続を一覧表示する<br>
ListConnections
</th>
<td>
<p>指定された環境内で使用可能なすべての接続を一覧表示します。</p>
</td>
</tr>
<tr>
<th>
自分の環境を一覧表示する<br>
ListUserEnvironments
</th>
<td>
<p>アクセス可能な環境を一覧表示します。</p>
</td>
</tr>
</table>


# 管理者向けPowerAutomate（Power Automate for Admins）

<table>
<tr>
<th>
フロー ユーザーの詳細を削除する<br>
RemoveAdminFlowUserDetails
</th>
<td>
<p>Power Automate ユーザーの詳細レコードを削除します。</p>
</td>
</tr>
<tr>
<th>
フロー ユーザーの詳細を取得する<br>
GetAdminFlowUserDetails
</th>
<td>
<p>Power Automate のスコープで指定したユーザーの詳細を返します。</p>
</td>
</tr>
<tr>
<th>
フローの承認を削除する<br>
RemoveAdminFlowApproval
</th>
<td>
<p>フローの承認を削除します。</p>
</td>
</tr>
<tr>
<th>
フローを管理者として削除する<br>
RemoveAdminFlow
</th>
<td>
<p>フローを削除します。</p>
</td>
</tr>
<tr>
<th>
フローを管理者として有効にする<br>
EnableAdminFlow
</th>
<td>
<p>フローを有効にします。</p>
</td>
</tr>
<tr>
<th>
フローを管理者として無効にする<br>
DisableAdminFlow
</th>
<td>
<p>フローを無効にします。</p>
</td>
</tr>
<tr>
<th>
フロー所有者ロールを管理者として取得する<br>
GetAdminFlowOwnerRole
</th>
<td>
<p>フローのアクセス許可を返します。</p>
</td>
</tr>
<tr>
<th>
フロー所有者ロールを管理者として編集する<br>
EditAdminFlowOwnerRole
</th>
<td>
<p>フローのアクセス許可を設定します。</p>
</td>
</tr>
</table>

このような内容をコネクタとして情報を取得することができます。

## Power Appsで管理アプリを作成してコネクタを試してみた
では、これを利用して管理アプリを実装してみようということで、以前から作成していたPower Appsの管理アプリに、Power Automateの管理機能を実装してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/d81cba01-aa9f-be63-776c-58d0fe13e5ef.png)

アプリ起動して、管理したいアプリアイコンを選んでもらうと、詳細画面に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/c0aa8014-c65e-6cb8-633c-129cc6e015b9.png)

■環境一覧には
PowerAutomate管理のListUserEnvironmentsを利用して環境の一覧を取得。

■フロー一覧には
PowerAutomate管理のListFlowsInEnvironmentを利用してフローの一覧を取得。

■黄色いボタン類には
指定したフローの所有者の変更、削除、メールでの問い合わせ機能

アプリとしては結構便利に出来て「こんな風に使うと便利だよねー！」っていうブログを書きたかったんですがね。
**なぜか環境にあるフローの数がやけに少ないんですよ。**


## 試しにPower Automateで、フローの一覧をコネクタで取り出してみるが、、、

ブログのはじめに書いた通り、方向性が変わってしまったのが、管理者として一番利用したいであろう、環境内のフローを一覧表示する「ListFlowsInEnvironment」が、なぜかすべてのフローを取得できないんです。

試しに、簡単なフローで取り出すと3件のみ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/e7bfd721-0546-7628-d45c-8af6b62abd6b.png)

その時に気が付いたのが、Power Platform管理センターから環境にあるフロー一覧を表示する挙動とまるで一緒で、まず3件表示されて、「さらに読み込む」ボタンを押すと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/33949ba6-53dc-8846-227c-d285ed682611.png)
↓このように残りのフローが表示されるんですよね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/572a9b7f-d2c1-0188-4f91-4e67541a1f31.png)

この妙な挙動に着目して、試しに「フローを管理者として一覧表示」の「設定」にある「改ページ」をオンにして「しきい値」を設定すると全件取得できたのですが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/170731b0-8382-4769-0f52-26b98bf7f6f2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/94238d1c-5871-2c3f-b88e-990812fa20ad.png)

Power Appsから「ListFlowsInEnvironment」でデータ取得する際のオプションには、「改ページ」のような設定項目はオプション含めて見当たらず、あともう少しで完成なのに、実装ができない状況に陥いってしまいました😢

今回は残念ながら、記事がまとまらず、時間の都合で情報共有にとどまってしまいましたが、この他の管理コネクタのアクションは、フローのオン・オフなど管理を少しでも楽になるようなツールに利用できるとは思いますので、皆さんもぜひお試しください。

お読みいただきありがとうございました。