Power Automateフローを使ってTeams「いいね」数を集計してみた

Power Automateフローを使ってTeams「いいね」数を集計してみたMicrosoft365

Teamsのチャネル投稿されたメッセージに対するリアクション数を集計する方法をご紹介します。

わりとニーズがある要件のようですね。検索してみたら、たくさん関連キーワードが表示されました。

Power Automateを使ったTeamsいいね数の集計・カウント(グーグルで見られた関連キーワード)

せっかく組織・チームで反応しているんだから数値化してチャネルパフォーマンス、活性化具合を見たいということでしょうか。

この記事では、反応6種類それぞれをカウントしています。メッセージに対して、誰が反応したかの集計方法は別記事にしています(記事最後部にリンク記載)。

スポンサーリンク

Teams標準の「分析」機能

Teamsの標準機能でもチームやチャネルに対する投稿パフォーマンスを見ることができます。小難しいことをする前に、これで要件がこと足りるならそれで済ますのもよいかと思います。

Power Automateを使ったTeamsいいね数の集計・カウント(Teams標準のチーム・チャネル分析機能)
Teams標準のチーム・チャネル分析機能

画像引用 Microsoft「Teamsで分析を表示する」

▲ 任意のチームを選択・右クリックして「チームを管理」をクリックします。

Power Automateを使ったTeamsいいね数の集計・カウント()
Teams標準のチーム・チャネル分析機能

▲ 「分析」タブを押すことで、チーム内の投稿パフォーマンス見ることできます。チャネルや期間でフィルターも可能。

スポンサーリンク

Power Automateを使ったTeams投稿反応の集計処理

一部のアクション作成で、動的なコンテンツが取得できないのでGUIを使わずに直接「式」を記述している箇所があります。マイクロソフトの仕様変更などにより、動作しなくなる可能性があります。

フロー仕様の制限

データの出力は、反応単位に行出力したり、メッセージ単位に行出力したりすることができます。私の場合は、後者「メッセージ単位に行出力」させました。

(誰がリアクションしたかなどを調べる反応単位に出力する方法については記事の最後部にリンクがあります)

ちょっと悩んだこと
  • Power Automateで取得できるチャネル投稿数は処理開始時より20件(全件は不可)
  • いつリアクションされるかはわからない。フロー実行後にリアクションが増えることもある
  • メッセージに件名を入れてくれないと投稿概要を把握しづらい
  • 返信の反応は拾えない

取得メッセージ20件

チャネル投稿されたメッセージは、全件は取れない仕様でした。

まぁ、これは仕方ないのかなと。

チャネル内にメッセージがとんでもない量あると、フロー実行がいつまでたっても終わらないケースも考えられます。メッセージを取得したら、そこからは最低一つのループ処理が加わるので、ループ処理内で重たい処理をしようものならパフォーマンス問題に発展しかねないということでマイクロソフトさまが制限を加えたのでしょう。

いつリアクションされるかはわからない

フロー実行直前に、投稿したばかりのメッセージがあるとリアクションの取りこぼしが発生します。時間をおいて「いいね」が付くなんてことはよくあるので、一度きりのフロー実行では正しく集計できないと考えました。

上記2つの理由により、フローは定期実行することとしました。

メッセージに件名を入れてくれないと投稿概要を把握しづらい

メッセージ単位で反応を見たいというケースでは、件名が入っている方がベターです。

本文出力も可能ですが、概要が把握しづらいのとメッセージ装飾が施されると本文内がHTML記述され可読性が落ちます。なるべく件名をつける運用に誘導したほうが良いでしょう。

返信の反応は拾えない

元の投稿に返信があった場合で、スレッド上ではそれに対してもいいねほかリアクションをすることはできるわけですが、返信に対する反応までは拾えません。

返信の反応まで含めてしまうとまたループ要素が増えるので、こういった制限があるのでしょうか。

実際の集計処理

Power Automateフローを使ったCSV出力のやり方を記載します。

定期実行という都合、CSVファイルは複数生成されます。また、チャネル内のメッセージ量がそれほどでなければ、当然のことながら重複も発生します。

正しい集計を行うにはさらにひと手間必要となります。

アレコレメモ
アレコレメモ

超ざっくり言いますと、CSVファイルを連結して、ピボットテーブルでは各反応の最大値で集計すればOKです。パワークエリとピボットテーブルが使えれば、集計は簡単です。パワークエリを使った複数ファイルの読み込み・連結は過去に記事にしています。

以降は、多少なりともPowerAutomateに触れたことある人向けの書き方をするので、基礎から把握したい人は次のような書籍でトレーニングするのがよいかと思います。

参考 そのほかのPower Automate書籍

CSV出力イメージ

まずは出力するCSVを設計します。次のような形式で出力することとしました。

Power Automateを使ったTeamsいいね数の集計・カウント(CSV出力イメージ)
(クリックで拡大)
メッセージID元の投稿に自動付与されるID
メッセージ件名元の投稿に付けられた件名(空欄のケースあり)
メッセージ日時元の投稿が行われた日時
メッセージ投稿者元の投稿をした人の表示名
リアクションタイプ反応6種類(likeほか)

個人アカウントの環境につき、反応の少なさはご容赦ください。

フローの全体像

フローは、ループ処理で癖はありますが、全体としてはシンプルです。

Power Automateを使ったTeamsいいね数の集計・カウント(フローの全体像)
フローの全体像

チャネル内のまとまったメッセージを取得して、一つ一つを解析、結果をCSVファイルへ出力するフローです。

時間トリガーの設定

定期実行させるので、時間を決めます。チャネルに投稿されるメッセージ数でどの程度の定期処理がふさわしいか判断しましょう。ここでは週次処理としました。

Power Automateを使ったTeamsいいね数の集計・カウント(スケジュール・トリガー)
スケジュール・トリガー

変数の初期化

フロー内で使う変数を定義します。

変数用途
スカラー(文字列)ファイル名を格納
アレイ(配列)投稿に対するリアクションを格納
Power Automateを使ったTeamsいいね数の集計・カウント(変数の初期化)

▲ ファイル名には、addHours関数を使い「yyyyMMdd-hhmmss」というように日時を含ませています。

addHours('<timestamp>', <hours>, '<format>'?)

チャネル投稿メッセージの取得

Teamsチームのメッセージを取得します。アクションの設定として、チーム名・チャネル名を指定します。

Power Automateを使ったTeamsいいね数の集計・カウント(チャネル投稿メッセージ取得)

メッセージ反応のカウント

取得したメッセージ一覧を投稿単位でループ処理させて、反応をカウントします。

アレコレメモ
アレコレメモ

このフローでちょっと複雑な部分

1. タイムゾーン変更

取得したメッセージの「投稿日時」は、UTC時間となっていますので日本時間へタイムゾーンを変更します。

Power Automateを使ったTeamsいいね数の集計・カウント(タイムゾーンの変更)
2. 反応の絞り込み

Teamsの反応は6種類(いいね+ハート+喜怒哀楽)、それぞれを絞り込んでいきます。

Power Automateを使ったTeamsいいね数の集計・カウント(ループ内でのリアクション絞り込み)
ループ内でのリアクション絞り込み

▲ アクショングループ「データ操作」から「アレイのフィルター処理」を選択します。動的コンテンツより「メッセージ反応」を差出人と設定し、そのあとはフィルター処理します。

画像では「reactionType」という動的コンテンツを取得できているように見えていますが、GUI上の操作では取得できません。式を直接入力して取得します。

「reactionType」を取得するために、画像の箇所で次のような式を入れます。

item()?['reactionType']
Power Automateを使ったTeamsいいね数の集計・カウント(ループ内でのリアクション絞り込み)

▲ 取得した直後は、「fx」がついたアイコンとなります。フローを一旦保存すると、Teamsアイコンがついた変数に変わります。

3. メッセージ処理をJSONへ格納

単一のメッセージ処理が終わったら、JSON式へ格納します。アクショングループ「データ操作」から「作成」を選択し、JSON式を記述します。

Power Automateを使ったTeamsいいね数の集計・カウント(メッセージ処理をJSONへ格納)

▲ 上4つの要素は、動的コンテンツからの取得です。

そのあとは、式を手動入力しています。

length(body('アレイのフィルター処理_(like)'))

▲ bodyの引数は、前処理の「アレイのフィルター処理」名称を入れます。

4. メッセージ単位処理をCSV出力用の配列へ格納

これまでメッセージ単位で処理していた結果をフロー冒頭で初期化した配列変数に格納します。「出力」はこの前の処理で自動生成される動的コンテンツです。

Power Automateを使ったTeamsいいね数の集計・カウント(CSV出力用変数へ代入)

CSVテーブル作成

ループを抜けた後は、CSVテーブルを作成ます。

Power Automateを使ったTeamsいいね数の集計・カウント(CSVテーブル作成)

ファイルの作成

これまでの処理が完成したら、ファイルへ結果を出力します。画像では、Sharepointを格納先としていますがOnedriveほか、任意の出力先を選択できます。

Power Automateを使ったTeamsいいね数の集計・カウント(ファイル作成処理)

▲ 出力させたファイル、ファイル内のメッセージは重複していることがあります。そのままでは正しい反応をカウントしづらいのでファイル結合などが必要となります。

動作確認

フローが出来たら動作確認します。

出力されたCSVファイルは、文字コーディング「UTF-8」となります。エクセルなどで読み込む際は、該当の文字コードを指定する必要があります。

Power Automateを使ったTeamsいいね数の集計・カウント(ファイル出力結果)
(クリックで拡大)

まとめ

Power Automateフローを使ってTeams「いいね」数をCSV出力してみた、というテーマで投稿しました。

あとは出力されたCSVファイルを使って集計処理すればOKです。パワーピボットが使えると楽かと思います。機会あれば、記事投稿します。

参考 そのほかのPower Automate書籍

Sharepintリストでいいね!や星評価を取る方法↓

タイトルとURLをコピーしました