Twitterで「Teams に追加したアプリは更新が必要だったりするけど、チームの管理を表示しないと更新有無がわからない」というつぶやきを見かけたので作ってみました。
あまり汎用性なさそうなので、メモがてら。
準備 : Graph API 利用のためのカスタムコネクター作成
今回のフローでは、Teams で利用可能なアプリ一覧と、チームに追加されたアプリの一覧を取得し、それぞれのバージョンを比較することで更新要否を判定しています。
これを行うための標準的なアクションはないので、Graph API を実行するためのカスタムコネクターを追加してフローを構成しました。
利用するのは Teams のアプリカタログにあるアプリ一覧の取得 と チームに追加されたアプリの一覧の取得 という2つの API です。
Azure AD の登録アプリに付与する権限は
TeamsAppInstallation.ReadForTeam TeamsAppInstallation.ReadWriteForTeam Group.Read.All Group.ReadWrite.All Directory.Read.All Directory.ReadWrite.All AppCatalog.Submit AppCatalog.Read.All AppCatalog.ReadWrite.All
です。カスタムコネクターとしての作りも非常に簡単で、以下の記事を参考に作成しました。
準備としてはこれで完成。
フロー概要
フローは全体で3つのブロックに分かれています。
- アプリカタログのアプリ一覧取得
- チーム内のアプリバージョンとカタログ内のアプリバージョンの比較
- チームへの結果通知
このうち2,3 については [更新をチェックするチームの数] x [それぞれのチームに追加されているアプリ数] 分だけループがまわるので、対象チーム数、アプリ数が多い場合にはそこそこ時間がかかります。
最後の通知では以下のような形式でチームに更新が必要なアプリをお知らせしています。
1. アプリカタログのアプリ一覧取得
まずカスタムコネクターでバージョン情報を含むカタログ内のアプリ一覧を取得します。
非常にプロパティが多いので、「選択」アクションで必要なプロパティだけを残します。
このブロックで、「最新のバージョン番号を含む利用可能なアプリの一覧」ができました。
2. チーム内のアプリバージョンとカタログ内のアプリバージョンの比較
次にチーム内のインストール済みアプリ一覧を作成します。カスタムコネクターのもう一つのアクションである「チームに追加されたアプリの一覧の取得」をつかいます。ここでもバージョン情報とアプリのIDを含む配列が得られます。
あとは2つの一覧を比較してバージョン差分があるかを確認します。
差分があれば、あらかじめ用意しておいた配列変数に追加してください。
これでチーム内のアプリで更新が必要なものの一覧が配列変数にたまりました。
3. チームへの結果通知
もし2.の結果、バージョン差分のあるアプリが1つでもあれば、そのアプリ名をチームに通知します。
ここは単純に 配列変数 の長さを評価して、0でなければ通知実行 としています。
通知内容は単純に『アプリの更新をしてください』 でもいいかもしれません。
おわり
ないものは作るの精神で標準機能で提供されていない通知を Power Automate と Graph API で作ってみました。
今回は自分の所属しているチームだけに通知を送りましたが、結構古くなっていますね。通知大事だ...
もしもっと詳細が必要であればコメントいただけますと幸いです。