Teamsのリアクションをカウントしてみよう ~Power Automate 編~

オフィスワーク モダナイズ への道

 普段利用しているTeamsのリアクション、「いいね」などは、投稿ごとに誰がいつリアクションしたのかなどの情報が全て取得できるようになっています。リアクションは投稿内容について「承認の代わり」にしたり、重要な投稿を「誰がまだ未読か」などデータとして取得・集計することで色々と活用方法が広がります。今回はこのTeamsのリアクション情報をPower Automateで取得する方法を紹介します。

Teamsへの投稿

 Teamsに投稿されたメッセージリアクションの集計はPower Automateにログインするアカウントでアクセスできる全てのチーム、チャネル、投稿に対して可能です。まずはリアクションを集計するTeamsの投稿を行います。集計しやすいように件名もきちんと入れておきましょう。件名が無い場合、どの投稿へのリアクションなのかが後々判別しにくくなってしまいます。
今回はこんなメッセージ2つを投稿して、それぞれリアクションを付けています。

Power Automateでフローの作成

 まずは、Power Automateで開発するフローの大まかな流れです。Power Automateではチームとチャネルまで決定するれば、該当する投稿メッセージすべてについてリアクションの情報が取得可能です。

インスタントフローを作成します。
まずは、リアクション一覧を格納するための変数をアレイ型で設定しておきます。

アクション一覧から「Microsoft Teams」-「メッセージを取得します」を選択します。

ここまでを実行すると、実行結果としてTeamsからメッセージとその他情報がjson形式で参照可能となります。

今回必要な部分としてはこの部分となります。

{
    "reactionType": "like",
    "createdDateTime": "2022-06-14T05:54:57.348Z",
    "user": {
        "application": null,
        "device": null,
        "user": {
            "id": "4fd4c81b-5013-4ec3-9b62-a41dd870e332",
            "displayName": null,
            "userIdentityType": "aadUser"
        }
    }
},
{
    "reactionType": "heart",
    "createdDateTime": "2022-06-14T05:54:05.841Z",
    "user": {
        "application": null,
        "device": null,
        "user": {
            "id": "67a57729-4fcf-4669-a1ea-e6b264121469",
            "displayName": null,
            "userIdentityType": "aadUser"
        }
    }
}

アクション一覧から「Microsoft Teams」-「メッセージ詳細を取得します」を選択します。
「メッセージ」に「メッセージを取得する」-「メッセージID」を選択すると自動的にApply to Each が配置されます。
全てのメッセージ対して実行することになります。

次に「データ操作」-「選択」アクションを追加します。
これは、メッセージ詳細から取得したjsonの情報から必要な項目を選択するために利用します。

「開始」の項目には、“outputs(‘メッセージ詳細を取得する’)?[‘body’]?[‘reactions’]” と入力します。
これでリアクションの情報部分を抽出します。

「マップ」の「キーの入力」には 
1つ目として “reactionType” 「値の入力」には式として “item()?[‘reactionType’]” と入力します。
2つ目は “createdDateTime” 「値の入力」には式として “item()?[createdDateTime]” 
3つ目は “userId” 「値の入力」には式として “item()?[‘user’]?[‘user’]?[‘id’]”  と入力します。
リアクションの種類と、リアクションの時間、リアクションをしたユーザーIDを抽出します。
ユーザー名はここでは取得できないので、後程ユーザーIDを元に取得します。

1つの投稿メッセージに対して、複数のメンバーがリアクションできますので、全てのリアクション情報を取得するためにApply to eachを配置します。「コントロール」から「Apply to each」を追加します。分かりやすいように“リアクション一覧”に名前を変更します。
「以前の手順から出力を選択」には「選択」-「出力」を選択しておきます。

「配列変数に追加」アクションを追加します。
「名前」には最初に定義した“Reaction”を選択します。
「値」には以下のjsonを入力します。
reactionTime はUTC時間となっていますので日本時間へタイムゾーンを変更します。

{
  "subject": "@{items('Apply_to_each')?['subject']}",
  "userId": "@{items('リアクション一覧')?['userId']}",
  "reactionType": "@{items('リアクション一覧')?['reactionType']}",
  "reactionTime": "@{convertTimeZone(items('リアクション一覧')?['createdDateTime'], 'UTC', 'Tokyo Standard Time', 'yyyy/MM/dd HH:mm:ss')}"
}

「CVSテーブルの作成」アクションを追加します。
「開始」にはリアクション情報が詰まった変数“Reactions”を指定します。

最後に「ファイルの作成」アクションを追加します。
OneDrive for Businessに保存されるので、保存先のフォルダとファイル名を指定します。
「ファイルコンテンツ」としては「CSVテーブルの作成」から「出力」をそのまま選んでしまうと文字化けしてしまうので、式として

concat(decodeUriComponent(‘%EF%BB%BF’), body(‘CSV_テーブルの作成’))

と入力します。

テスト実行

 一旦ここまでの内容で保存してテスト実行してみましょう。
リアクション情報がcsvで出力されました。
いいね(like)が2つに、ステキ(hart)が1つ、笑い(laugh)が1つという結果となりました。
実際にはかなりの情報量になるので、ピボットテーブルなどで集計するとよいでしょう。

ユーザー名の取得

 このままですと、誰がリアクションしたのかが分かりませんのでユーザー名を取得できるように機能を追加します。
「配列変数に追加」の上に「ユーザープロフィールの取得(V2)」アクションを追加します。
「ユーザー(UPN)」には “items(‘リアクション一覧’)?[‘userId’]” を入力します。

「配列変数に追加」アクションの「値」も少し修正して

{
  "subject": "@{items('Apply_to_each')?['subject']}",
  "userName": "@{outputs('ユーザー_プロフィールの取得_(V2)')?['body/displayName']}",
  "reactionType": "@{items('リアクション一覧')?['reactionType']}",
  "reactionTime": "@{convertTimeZone(items('リアクション一覧')?['createdDateTime'], 'UTC', 'Tokyo Standard Time', 'yyyy/MM/dd HH:mm:ss')}"
}

とします。

これで、ユーザー名が取得できます。

テスト実行2

 テストしてみると、先ほどとは変わってユーザー名がきちんと取得できています。

フローの全体はこちらになります。


以上が、Power AutomateによるTeamsのリアクションのカウント方法です。Teamsからでは見られないいくつかの情報もPower Automateを通すことで細かく取得できることが分かります。特定の日付以降のメッセージだけに絞って集計してみたり、全メンバー必読のメッセージについて、未読のメンバーに通知を出してみたりと利用法方は色々考えられます。

ここまででも十分活用はできるのですが、残念ながらPower Automateからだと現時点では、アクセス権のあるTeamsのチームとチャネルを指定した上でメッセージに対してのリアクション情報の取得に限定されています。
そこで次回は、PowerShellを使って、Teamsの組織内の(プライベートも含め)全てのチーム、チャネルの全てのメッセージのリアクション情報の取得方法を紹介する予定です。

著書の紹介欄

Hyper-Vで本格的なサーバー仮想環境を構築。仮想環境を設定・操作できる!

できるPRO Windows Server 2016 Hyper-V

◇Hyper-Vのさまざまな機能がわかる ◇インストールからの操作手順を解説 ◇チェックポイントやレプリカも活用できる Windows Server 2016 Hyper-Vは、仮想化ソフトウェア基盤を提供する機能であり、クラウドの実現に不可欠のものです。 本書では、仮想化の基礎知識から、Hyper-Vでの仮想マシンや仮想スイッチの設定・操作、プライベートクラウドの構築、Azureとの連携などを解説します。

初めてのWindows Azure Pack本が発売

Windows Azure Pack プライベートクラウド構築ガイド

本書は、Windows Azure PackとHyper-Vを利用し、企業内IaaS(仮想マシン提供サービス)を構成するための、IT管理者に向けた手引書です。試用したサーバーは、最小限度の物理サーバーと仮想マシンで構成しています。Windows Azure Packに必要なコンポーネントのダウンロード、実際にプライベートクラウド構築する過程を、手順を追って解説しています。これからプライベートクラウドの構築を検討するうえで、作業負担の軽減に役立つ一冊です。

ブログの著者欄

樋口 勝一

GMOインターネットグループ株式会社

1999年6月GMOインターネットグループ株式会社に入社。Windows Serverをプラットフォームとしたサービス開発から運用・保守まで幅広く担当。講演登壇や出版、ネット記事連載などでマイクロソフト社と強い信頼関係を構築。「マイクロソフトMVPアワード」を15度受賞し、インターネットソリューションのスペシャリストとして活躍。

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW