MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Teams に追加したアプリの更新情報を取得するフロー

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

です。カスタムコネクターとしての作りも非常に簡単で、以下の記事を参考に作成しました。

idea.tostring.jp

準備としてはこれで完成。

フロー概要

フローは全体で3つのブロックに分かれています。

  1. アプリカタログのアプリ一覧取得
  2. チーム内のアプリバージョンとカタログ内のアプリバージョンの比較
  3. チームへの結果通知

このうち2,3 については [更新をチェックするチームの数] x [それぞれのチームに追加されているアプリ数] 分だけループがまわるので、対象チーム数、アプリ数が多い場合にはそこそこ時間がかかります。

f:id:mofumofu_dance:20210209165757p:plain
フロー全体像

最後の通知では以下のような形式でチームに更新が必要なアプリをお知らせしています。

f:id:mofumofu_dance:20210209170111p:plain
実際にとどいた更新通知

1. アプリカタログのアプリ一覧取得

まずカスタムコネクターでバージョン情報を含むカタログ内のアプリ一覧を取得します。

非常にプロパティが多いので、「選択」アクションで必要なプロパティだけを残します。

f:id:mofumofu_dance:20210209170741p:plain
アプリ一覧を取得。バージョン情報が含まれている

このブロックで、「最新のバージョン番号を含む利用可能なアプリの一覧」ができました。

2. チーム内のアプリバージョンとカタログ内のアプリバージョンの比較

次にチーム内のインストール済みアプリ一覧を作成します。カスタムコネクターのもう一つのアクションである「チームに追加されたアプリの一覧の取得」をつかいます。ここでもバージョン情報とアプリのIDを含む配列が得られます。

あとは2つの一覧を比較してバージョン差分があるかを確認します。

差分があれば、あらかじめ用意しておいた配列変数に追加してください。

f:id:mofumofu_dance:20210209172141p:plain
インストール済みアプリ一覧とカタログのアプリ一覧を比較する処理

これでチーム内のアプリで更新が必要なものの一覧が配列変数にたまりました。

3. チームへの結果通知

もし2.の結果、バージョン差分のあるアプリが1つでもあれば、そのアプリ名をチームに通知します。

ここは単純に 配列変数 の長さを評価して、0でなければ通知実行 としています。

通知内容は単純に『アプリの更新をしてください』 でもいいかもしれません。

f:id:mofumofu_dance:20210209172535p:plain
通知パート

おわり

ないものは作るの精神で標準機能で提供されていない通知を Power Automate と Graph API で作ってみました。

今回は自分の所属しているチームだけに通知を送りましたが、結構古くなっていますね。通知大事だ...

もしもっと詳細が必要であればコメントいただけますと幸いです。