このページの本文へ

松本典子の「はじめよう!Azure Logic Apps/Power Automateでノーコード/ローコード」 第41回

指定のキーワードが含まれてたメッセージをメンバー全員に自動でメール送信する

重要なTeamsメッセージの見失い/見落としを防ぐPower Autometeのフローを作ろう

2024年09月12日 11時00分更新

文● 松本典子 編集● 大塚/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 こんにちは、Microsoft MVP(Business Applications)の松本典子です。

 皆さんは「Microsoft Teams」を利用されているでしょうか。Teamsでは、プロジェクトメンバーなど複数人が参加する「グループチャット」を作ることができます。

 グループチャットは関係者だけのチャットになるので気軽に意見交換ができますが、参加メンバーや投稿メッセージの数が増えると、古い投稿はどんどん流れていってしまいます。そのため「過去の重要なメッセージを探すのに時間がかかった」「重要な投稿を見逃してしまった」という経験をされている方も多いのではないでしょうか。

 今回は、そうした“ちょっとした時間泥棒”な作業を改善するキッカケになる仕組みを作ってみたいと思います。Power Automateの「Microsoft Teams」コネクタを活用し、指定の文字列が含まれているメッセージがあれば、グループチャットに参加しているメンバー全員にメッセージ内容をメール送信するというものです。

1. 今回実現すること

グループチャットの準備

 サンプルとして、今回はTeamsに「○△イベント準備用」というグループチャットを作成しました。ここに「メール送信」という文字列が含まれるメッセージが投稿されたら、メンバー全員にメール送信されるようにします。

 もちろん、実際に皆さんが活用される際には、このグループチャット名や対象とする文字列は任意に変更してください。

2. フロー全体図

フロー全体図

 今回、Power Automateで作成するワークフローの全体像は上図のとおりです。

 特定のグループチャットで「メール送信」という文字列が含まれるメッセージ投稿があった場合、それをトリガーとして起動し、そのメッセージをグループチャットのメンバー全員にメール送信するという流れです。

 なお、今回はクラシックデザイナーの画面で説明していますが、フローはモダンデザイナーでも同じように作成できます。

2-1. トリガーの設定

トリガーの設定

 まず、フローのトリガーには「Microsoft Teams」コネクタを利用します。

 検索窓に「teams」と入力して「Microsoft Teams」コネクタを選択し、アクション一覧から「キーワードが言及された場合」をクリックします。このアクションは次のように設定します。

キーワードが言及された場合

 コネクタは以下のように設定します。

 (1)メッセージの種類:今回は「グループチャット」を選択
 (2)検索キーワード:今回は「メール送信」と入力(複数のキーワードを設定できます)
 (3)chat - 1:対象のグループチャット名を選択(今回は「○△イベント準備用」)

2-2. アクションの設定:変数を初期化する

 グループチャットに入っているメンバー全員のメールアドレス一覧を作成するため、変数を設定します。

アクションの設定

 タブの「組み込み」をクリックし、「変数」コネクタを選択します。

変数を初期化する

 一覧から「変数を初期化する」アクションを選択します。

変数を初期化するアクションの設定

 このアクションは以下のように設定します。複数のメールアドレスを格納できるように、変数の種類は「アレイ」、つまり配列変数にします。

 (1)名前:「メールアドレス一覧」と入力
 (2)種類:「アレイ」を選択

2-3. アクションの設定:メンバー リストを作成

 グループチャットに参加しているメンバーリストを作成します。

メンバー リストを作成

 検索窓に「teams」と入力して「Microsoft Teams」コネクタを選択し、アクション一覧から「メンバー リストを作成」をクリックします。このアクションは次のように設定します。

 (1)スレッドの種類:「グループチャット」を選択
 (2)Group chat:対象のグループチャット名を選択(今回は「○△イベント準備用」)

2-4. アクションの設定:配列変数に追加

 「2-2. アクションの設定:変数を初期化する」で作成した変数に、メンバー全員のメールアドレスを追加します。

配列変数に追加

 タブの「組み込み」をクリックして「変数」コネクタを選択します。アクションの一覧から「配列変数に追加」をクリックします。

 (1)名前:変数名「メールアドレス一覧」を選択
 (2)値:メンバー リストを作成の動的なコンテンツ「メンバーの一覧 電子メール」を選択
 (3)Apply to each(自動的に追加):(2)で値に「メンバーの一覧 電子メール」を設定すると、自動的にApply to eachが追加されます。

2-5. アクションの設定:結合

 変数に格納されたメールアドレスを、Outlookコネクタで利用できる形に成形します。具体的には複数のメールアドレスを「;」でつなげて、CCメール(同報メール)の宛先として使えるようにします。

メールアドレスを結合

 このアクションでは以下の設定をします。

 (1)結合する配列:「変数」の動的なコンテンツ「メールアドレス一覧」を選択
 (2)次を使用して結合:「;」を入力

2-6. アクションの設定:メッセージ詳細を取得する

 グループチャットの該当メッセージの詳細を取得します。

メッセージ詳細を取得する

 検索窓に「teams」と入力して「Microsoft Teams」コネクタを選択し、アクション一覧から「メッセージ詳細を取得する」をクリックします。このアクションは次のように設定します。

 (1)メッセージ:キーワードが言及された場合の動的なコンテンツ「Message ID」を入力
 (2)メッセージの種類:「グループチャット」を選択
 (3)Group chat:対象のグループチャット名を選択(今回は「○△イベント準備用」)
 (2)Apply to each:(1)の動的なコンテンツ「Message ID」を入力すると、自動的にApply to eachが追加されます。

2-7. アクションの設定:メールの送信(V2)

 グループチャットのメッセージ本文をメンバー全員にメールで送信します。

メールの送信(V2)

 検索窓に「outlook」と入力して「Office 365 Outlook」コネクタを選択し、アクション一覧から「メールの送信(V2)」をクリックします。このアクションは次のように設定します。

 (1)宛先:「結合」の動的なコンテンツ「出力」を入力
 (2)件名:メール受信時にわかりやすい内容を入力(今回は「グループチャットの履歴」)
 (3)本文:テキストと式、動的なコンテンツを組み合わせてメール本文を作成します。この内容は任意に変更してください。

 なお「本文」には、次のようにして送信日付や当該メッセージへのリンク、メッセージの内容を組み込みます。

(A):「日付:」の後ろに以下の式を入力

 formatDateTime(utcNow(), 'yyyy-MM-dd')

(B):「メッセージリンク:」後ろに、メッセージ詳細を取得するの動的なコンテンツ「Message ID」を選択

(C):以下の式を入力

 replace(outputs('メッセージ詳細を取得する')?['body/body/plainTextContent'], decodeUriComponent('%0A'), '<br>')

 以上でフローが完成しました。最後は忘れずに、フローに名前を付けて「保存」します(筆者は「Teamsキーワードが言及されたらメール送信」いうフロー名にしました)。

3. 実行結果

 実際にフローを実行してみます。「1. 今回実現すること」で触れたとおり、今回は「○△イベント準備用」というグループチャットに、「メール送信」という文字列が含まれるメッセージを投稿すると、フローが実行されて全メンバーにメールが送信されるはずです。

グループチャットへメッセージを投稿

 Teamsのグループチャットに、「メール送信」の文字列を含むメッセージを投稿します。

送信されるメール内容

 上図のように、ほぼリアルタイムでグループチャットの内容が記載されたメールがメンバー全員に送信されました。

最後に

 グループチャット機能は便利ですが、個人的には「後からメッセージを探すのが大変だな」と感じていたので、今回のような仕組みがあると便利なのではないか、と思っています。

  なお、今回使用したTeamsコネクタの「キーワードが言及された場合」アクションは、グループチャットだけでなくチャネルの投稿に対しても同じように利用することができます。この機能を活用して、業務改善のキッカケにしてみてください。

カテゴリートップへ

この連載の記事
ピックアップ