この記事は『CRESCO Advent Calendar 2021』 17日目の記事です。

 

こんにちは。総合人事部いけたに(さ)です。
Microsoft365の導入後、社内でのコミュニケーションツールがTeamsになり非常に便利になりました。
Teamsのチャットでは、既読機能や応答機能があり非常に便利です。
しかし、TeamsにはメールのようにBccで大量に送る機能はありません。
そこで、Power Automateから大人数にTeamsのチャット送信をしてみました。
同じように人事や労務でお困りの方のお役に立てれば幸いです。

実施方法

①送信相手のExcelをOneDrive上に作成します。

Excelには、宛先とメールアドレスの一覧を作成し、テーブルとして書式設定します。

②Power Automateの手動フローを作成します。

③『新しいステップ』をクリックし、『表内に存在する行を一覧表示』を指定します。

①で作成したOneDrive上のファイル名とテーブル名を指定します。

④さらに『新しいステップ』をクリックし以下のように配置していきます。

『Apply to each』の中に『ユーザープロフィールの取得』『チャットの作成』『ユーザーの@mentionトークンを取得する』『チャットまたはチャネルでメッセージを投稿する』を順次設定します。

⑤『ユーザープロフィールの取得』

これは、メールアドレスからプロフィールの表示名を取得するために使います。
必ずしも行わなくてはいけない作業ではないですが、チャット名が分かりやすいといいなぁと思ってやってみました。
次で使います。

⑥『チャットの作成』

①で作成した一覧のメールアドレスと、関係メンバーを加えつつグループチャットを作成します。
グループチャットのタイトルに、⑤で取得したプロフィールの表示名を使用します。
(※タイトルは設定する必要はありません)

⑦『ユーザーの@mentionトークンを取得する』

送信相手にメンションするために取得します。次で使います。

⑧『チャットまたはチャネルでメッセージを投稿する』

投稿する本文を作成しましょう。
Group chatには、⑥で作成した『会話ID』を設定します。
また、messageには、⑦で取得した『@mention』トークンを設定します。

⑨保存して、さあ、実行です!

各種エラーの対応

一発で正常終了したわけではありません。
いくつかエラーが発生しました。

Duplicate chat members is specified in the request body.

チャットメンバー重複のエラー。

チャット作成時、自分のメールアドレスを入れたり、2つ同じメールアドレスを入れると発生するエラーです。
1人でテスト実行しようとしていました。一人ではテスト出来ないので、誰かの協力が必要です。

Out of call volume quota. Quota will be replenished in 00:11:53.

制限エラー(ご丁寧に11分後に解除されると案内されました。)

一定時間内にTeamsを呼び出せる回数には制限があります。
60秒に100回、1時間に300回・・・呼び出し回数であって、投稿数ではないんです。
ループ処理(チャット作成、@メンション取得、メッセージ投稿)を100回位実行後にエラーになったので『1時間に300回』に引っかかった模様。
参考:https://docs.microsoft.com/en-us/connectors/teams/#limits

Exception has been thrown by the target of an invocation.

エラーが発生した…という不親切なエラーです…泣。
このエラーが発生した場合は、エラーの原因を自分で判断するしかありません。
私の場合、チャットの作成時『追加するメンバー』の最後にセミコロンを入れてしまい発生しました。

いかがでしたでしょうか。問題は解決しそうですか。
Power Automateは非エンジニアだけど、IT苦手ではないよっていう管理部門にも向いていると思います。
面倒な作業を効率化していきましょう!