Power Automateでカンマ区切りメールアドレスから複数人にTeamsのメンションをかける

Teamsで複数人にメンションをかける方法が知られています。リンク先の方法では、複数のメールアドレスが配列として得られています。一方で、複数人の宛先を記述するよくやる方法として、カンマ,やセミコロン;で区切って複数のメールアドレスを書き並べた文字列を作ることがあります。本記事では、このようなケースでカンマ区切り文字列から複数のメールアドレスの配列を生成します。

なお、この記事で紹介するフローであれば、カンマ区切りで連結していない単独のメールアドレスが入力であるときも正常に動作します。

フローの全体像

Power Automateのフローは以下の通りです。各処理の中身は後述します。

各アクションの解説

カンマ区切りのメールアドレス

組み込み>データ操作>作成アクションを使用して、このフローで使用するカンマ区切りテキスト形式のメールアドレスを格納します。実際のフローでは、PowerAppsトリガーなどを経由して値を渡します。

ここでは “aa@exaple.com, bb@example.com, cc@example.com” のような形でメールアドレスが記述されています。

メールアドレス配列の初期化

組み込み>変数>変数を初期化するアクションを使用して、カンマ区切り文字列から配列を生成します。

split関数に分割する文字列と、分割する位置を指定する文字(ここではカンマ,)を与えることで、文字列を分割します。注意すべきことに、split関数を使うだけではPower Automateのフローで繰り返し操作の対象となる配列になりません。split関数の出力は文字列です。変数を初期化するアクションに配列のもとと「値」に、このsplit関数の出力を渡す必要があります。

式にはsplit(outputs(‘カンマ区切りメールアドレス’),’,’)のように記述します。

この配列は「メールアドレス配列」という名前で後段で使用できます。

メンショントークンの初期化

各メールアドレスから生成したメンショントークンを格納します。組み込み>変数>変数を初期化するアクションを使用して、空の配列を用意します。

Apply to each

組み込み>コントロール>それぞれに適用するアクションを使用して、「メールアドレス配列」から各メールアドレス要素を取り出してメンショントークンを生成する処理を行います。


ユーザープロフィールの取得

標準>Office365Users>ユーザープロフィールの取得(V2)アクションを使用して、メールアドレスからユーザープリンシパル名を取得します。@mentionトークンを取得するのにユーザープリンシパル名が必要なのに対して、所属組織によってはメールアドレスがユーザープリンシパル名と異なる場合があるためです。

ここで入力には以下のように記述しています。
trim(items(‘Apply_to_each’))
trim関数はスペースを削除する関数です。カンマ区切りテキスト形式でメールアドレスを入力する際に、メールアドレス間にスペースを入力することが多いので、スペースを除去する処理を介在させた方が安全です。

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

Teamsの当該アクションで、ユーザープリンシパル名から@mentionトークンを生成します。

配列変数に追加

組み込み>変数>配列変数に追加アクションで、生成した@mentionトークンを配列に格納します。

メンショントークンの結合

組み込み>データ操作>結合アクションで、「メンショントークン」配列の要素を結合します。「次を使用して結合」はカンマ,を使用していますが、半角スペースなどでもOKです。

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

「メンショントークンの結合」アクションの出力をメッセージの中で使用すれば、メンションがかかります。

なお、複数のメンショントークンを作成し、結果としてひとつのメッセージの中で同じユーザーに対して何度もメンションがかかるような本文ができたときは、本文中で最初にそのユーザーが登場する部分だけメンションがかかったように表示されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください