背景
Teams のリアクション解析方法が無かったので、取りあえず作ってみた。
概要
- Graph API で messages を取得
- 20件ずつしか取れないので、指定日までひたすら取得
- 指定日は、日付指定ではなく、何日前か?を指定
指定日より古いデータがあった時点で、その際に取得した全データを返すので注意
気になるなら、フィルターすれば良い
Power BI Serivce や Custom Connector での自動更新には認証が出来ないので、たぶんアプリ登録必要?
全メッセージ取得には課金発生している様子・・。その影響が出てるかも
機能改修
2022/2/16 不具合修正
Version 1/0/2/0
- Replies の Text 返却が固定値になっていたので修正
2022/2/8 要望があったので追加&修正 (詳細版へのみ)
Version 1/0/1/0
- CreatedDateTime の TimeZone 対処
- nextlink が無い場合の取得終了(エラー対処)
- Replies の取得追加
すぐ使ってみたい人用の使い方
まずはダウンロード
カスタムコネクター認識フォルダーへ保存
以下で多分行ける筈。
%userprofile%\ドキュメント\Power BI Desktop\Custom Connectors
Documents じゃないと動かない場合もあるかも?英語版?
Power BI を(再)起動して、今回のコネクターを探す
以下が出るので「続行」(詳細省略)
不安な場合は、GitHub からコードをダウンロードして、Build して *.mez ファイル作成してください
Teams の チャネル内メッセージの URL をコピーして貼り付けして、「OK」
"TeamId", "ChannelId" を「リンクをコピー」で取得したURLから抽出してます
データの再構築方法
コネクター二点
TeamsReaction
投稿者とリアクションで集計したもの
こっちさえあれば、と思ったものの・・集計の仕方に悩んだので詳細版も追加
悩んだことは
- Bot の投稿
- 投稿者自身の reaction
- reactionType での集計(それぞれに分けたほうがいいのか・・それとも三分割ぐらいにしたほうがよいのか・とか)
TeamsReactionDetails
注意
- Bot代理投稿だと、postUser が null なので、 onBehalfOf がある
- 完全Botだと、両方 null
- link は、元となるメッセージへのリンクなので、気になるメッセージの確認用途に
- reactions は nullable で複数有。誰がつけたかも保持しているので、自己reactions を外す方がいいかも
ソース
あとがき
Team, Channel を選択式にしたかったんだけどダイアログにする方法がわからず諦め
事前に team だけ取得して見せることは出来そうだったけど、channel もってなったので・・
Power Automateで、選択したチャネルメッセージの分析結果を通知してくるようにしたほうが使いやすいかも?