ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Teams のチャネルでピン留めされたメッセージの一覧をPower Automate クラウドフローで取得する

きっかけ

Teams チャットのピン留めは、画面一番上に固定表示されなかなか目立ちます。しかし、チャネルのピン留めされたメッセージは情報パネルを表示しないとアクセスできずなかなか気づきにくい状態です。
Power Automate クラウドフローでピン留めされたメッセージの情報が得られないか?と考え調べてみました。

 

Teamsコネクタのアクションではサポートされていない

まずはTeamsコネクタのアクションを確認しましたが、使えそうなアクションは見当たりません。

「メッセージを取得する」アクションでチャネルのメッセージを取得し、出力を確認しましたが使えそうな情報は持っていないようです。

 

Graph API でもサポートされていない

Graph API でも チャットのピン留めメッセージの取得についてはページがありますが、チャネルのピン留めに関しては見当たりません。

現時点ではサポートされていないと思われます。

learn.microsoft.com

 

文書化されていないTeams の ネイティブ API

こちらのページに興味深い内容が載っていました。

チャネルのメッセージをピン留めする手段を調べたページ(chatと書かれていますがchannel)でしたが、Graph API 非対応な機能の為、Webブラウザの開発者モードでブラウザ版Teamsのアクセス先URLを調べてTeams ネイティブのREST APIを探るというアプローチです。

※リンク先のページにも書かれていますが、このアプローチで実現できたとしても、文書化されていない Teams API を使用することになりMSのサポート対象外の使い方になりますので、運用環境では使用しない方が良さそうです。ここから先は興味本位で検証を進めます。

nanddeepnachanblogs.com

 

早速真似して調べてみました。

  1. EdgeでTeamsのチャネルにアクセスし(i)アイコンをクリックし情報パネルを展開しておく
  2. Edge の開発者モード→Networkを表示しておく
  3. 1.で開いた情報パネルの「ピン留めされた投稿」をクリック

すると、それっぽいURLが取得できました。

何度か試行しid部分の変化を確認しましたが

https://teams.microsoft.com/api/csa/amer/api/v1/teams/{一般チャネルのchannel id}/channels/{ピン留めの情報を取得したいchannel id}/pins

という形式でいけそうです。

 

Power Automate クラウドフローでアクセスしてみる

いつものSharePoint コネクタの「SharePoint  に HTTP 要求を送信します」アクションで試してみます。

すると取得に成功しました!

 

こんな感じです。

チャネルでピン留めされているメッセージのリストが取得できています!

 

ついでに確認してみた

チャネルのメッセージをピン留めする

https://teams.microsoft.com/api/csa/amer/api/v1/teams/{一般チャネルのchannel id}/channels/{メッセージがあるchannel id}/posts/{メッセージID}/pin

※メソッド:POST

 

チャネルのメッセージのピン止めを解除する

https://teams.microsoft.com/api/csa/amer/api/v1/teams/{一般チャネルのchannel id}/channels/{メッセージがあるchannel id}/posts/{メッセージID}/pin

※メソッド:DELETE

 

最後に

興味本位で試してみましたが、文書化されていない Teams ネイティブな? API を使用しています。MSのサポート対象外の使い方になりますので、運用環境では使用しない方が良いかと思います

Graph API でチャネルのピン留めメッセージの情報取得がサポートされるのを待ちましょう!