はじめに
Microsoft Teams を業務で使っていると、「チャット履歴を取得して分析したい」「記録として残したい」と思うことがあります。
私自身も Power Automate や Graph API を使って、Teams の会話履歴を取得しようと試みましたが、一般ユーザーでは実現が難しいことが分かりました。
この記事では、実際に試して分かった制限や、なぜ一般ユーザーでは難しいのかをまとめます。
難しい理由
その1.Graph API を使うには Azure AD アプリ登録が必要
Microsoft Graph API を使えば、Teams のチャネルメッセージやチャット履歴を取得できます。
しかし、API を使うには以下の情報が必要です。
-
tenant_id
(テナント ID) -
client_id
(アプリのクライアント ID) -
client_secret
(アプリのシークレット)
これらは Azure AD にアプリ登録しないと取得できません。
そして、アプリ登録には 管理者権限が必要です。
つまり、一般ユーザーが自分のアカウントだけで Graph API を使うことはできません。
その2.Power Automate の Teams コネクタの制限
Power Automate には「Teams のメッセージを取得する」コネクタがあります。
これを使えば、チャネルのメッセージを取得できますが、以下の制限があります。
- 最大20件までしか取得できない
-
@odata.nextLink
によるページングがサポートされていない - コードビューを編集しても、URL を直接指定することはできない
つまり、大量の履歴を自動で取得することはできません。
一般ユーザーができること・できないこと
方法 | できるか | 備考 |
---|---|---|
Graph API(直接) | × | 管理者によるアプリ登録が必要 |
Power Automateコネクタ | △ | 最大20件、ページング不可 |
Power Automate + HTTP | × | トークン取得にclient_secretなどが必要 |
そのため、もし本格的に Teams の履歴を取得したい場合は、
管理者に以下のような依頼をする必要があります。
- Azure AD にアプリ登録してもらう
- 必要な API 権限(例:
ChannelMessage.Read.All
)を付与してもらう - クライアント ID やシークレットを共有してもらう
まとめ
- 一般ユーザーが Teams の会話履歴を取得するのは、現状ではかなり難しい
- Power Automate のコネクタでは制限があり、実用的な取得は困難
- 本格的にやるには、管理者との連携が不可欠
おわりに
「Teams の履歴を取得したい」というニーズは多いはずですが、Microsoft の仕様上、一般ユーザーだけでは限界があります。
この記事が、同じように悩んでいる方の参考になれば幸いです。