前回の記事でPower Automateを用いてTeamsにメンション付きメッセージを送信する方法を解説しました。
今回の記事では、チーム内の複数人のメンバーへメッセージを送る方法について解説していきたいと思います。
わたしのテスト環境の解説
Microsoft365 開発者プログラム
今回は以前の記事にて作成した試用期間中の「Microsoft365 開発者プログラム」というテスト環境を用います。Microsoft365 開発者プログラムは無料でMicrosoft365 E5と同等のテスト環境を試用できます。ご興味があればあわせて下の関連記事をご覧ください。
Microsoft365 開発者プログラムは下記の方におすすめ
- これからPower Automateを導入を検討している方
- 本番環境でテストしたくない方
- テスト環境を無料で用意したい方
今回のゴール
▲19名のチームメンバーのうちDirector
の肩書きを持つメンバーに、Power Automate からメンション付きメッセージを送信します。(図の赤枠の3名)役職はTeamsの「設定>メンバータブ」から確認することができます。
この記事のゴール!
- Power Automateから、Directorの肩書きを持つメンバーにメンション付きメッセージを送信するフローをつくる。
- Directorの肩書きを持つメンバーの増減があっても動的(フローを編集せず)に対応できるようにしたい。
「今回使用する方法は、特定の部署(事業所)に所属する人だけにメンションする」という方法にも使えます。
姓・名・電話番号などユーザプロファイルに存在する属性なら使用可能にゃ。
Power Automateフローの完成図
▲このフローを実行すると、
▲このようにディレクターの3名だけにメンションしたメッセージを送信します。
複数人へメンションするポイントは「グループメンバーの一覧表示」アクション!
Microsoft 365コネクタ「グループメンバーの一覧表示」アクションとは。
Microsoft365コネクタの「グループメンバーの一覧表示」アクションを使うことがポイントです。
このアクションは指定したチームにメンバのメールアドレスや肩書きなどのプロファイル情報を取得することができます。
フロー作成手順
フロー作成前にやっておくと便利な設定
フロー作成前に、Power Automate の「試験的な機能」を有効にすることをおすすめしています。設定した方が良い理由と設定方法は下記の記事をご覧ください。15秒でできる設定です。
フロー作成手順
それでは、フローを作成していきます!
▲インスタントクラウドフローを新規作成します。
▲フロー名を入力して「手動でフローをトリガーします」をクリックして「作成」をクリックします。
▲新しいステップをクリックします。
▲「group」で検索し、「Office365groups」コネクタをクリックします。
▲「グループメンバーの一覧表示」アクションをクリックします。
▲グループIDのところにチーム名を選択して入力します。
下のテキストボックスは「上」という名前の設定値になっています。これは取得するメンバー数です。(おそらく取得上限数という意味の「上」かと思いますw)
空欄にするとデフォルトの100名分までのデータを取得します。200名取得する場合は200と入力してください。
フロー作成の途中ですが、ここで一度「グループメンバーの一覧表示」でどんなデータが取得できるのかを確認してみましょう。フロー作成画面の右上の「テスト」をクリックしてテスト実行します。
▲画面右上のテストをクリックします。
▲「手動」を選択して「テスト」をクリックします。
▲「フローの実行」をクリックします。
▲フローが実行完了しましたら、実行結果画面の中の「グループメンバーの一覧表示」アクションをクリックして出力のところの「未加工出力の表示」をクリックします。
▲ログが確認できます。
前回の記事で、メンションするためにはUPN(ユーザープリンシパルネーム)が必要とお伝えしました。ログを見るとUPNが取得できています。また、肩書も取得できていますね。どうやらメンションタグ作成に必要な情報はそろっていそうなので良さそうですね。
アレイ型の変数を追加します。この変数の役割は複数のタグメンションの一時保管用です。
▲新しいアクションを追加します。変数で検索して、変数コネクタをクリックします。表示されたアクションの中の「変数を初期化する」アクションを追加します。
▲パラメータを入力します。
- 名前:変数の名前を入力します。ここでは”メンショントークン”としました。
- 種類:アレイを選択します。
- 値:初期値は不要なので空欄にします。
▲「コントロール」コネクタをクリックします。
▲「Apply to each」アクションを追加します。
▲動的パラメータから「グループメンバーの一覧表示」の戻り値のひとつである「value」を選択します。
▲「Apply to each」アクションの中にアクションを追加します。
▲コントロールコネクタの中にある「条件」アクションを追加します。
▲「条件」アクションの左辺に、動的なコンテンツの中から「役職」を選択します。
▲真ん中のテキストボックスの条件のところで「次の値に等しい」を選択します。右辺は”Director”としました。
これで「役職がDirectorの人」という条件文が作成できました。
▲「はいの場合」にアクションを追加します。
▲Teamsコネクタの中にある「ユーザーの@mentionトークンを取得する」をクリックします。
▲ユーザのところに動的なコンテンツ(動的な値)の中の「グループメンバの一覧表示」の戻り値である「ユーザープリンシパル名」を選択して入力します。
▲「はいの場合」の中の「アクションを追加」をクリックします。
▲「変数」で検索します。「変数」コネクタをクリックした中にある「配列変数に追加」アクションを追加します。
▲「名前」はStep5で作成した変数名「メンショントークン」と入力します。「値」は「ユーザーの@mentionトークンを取得する」の動的コンテンツ(動的な値)である「@mention」を選択します。
▲「Apply to each」ループの外側の「新しいステップ」をクリックしてアクションを追加します。
▲「データ操作」で検索します。データ操作コネクタの中にある「参加」アクションを追加します。(ここでは「参加」と表示されていますが、アクションを追加すると結合という名前になります。おそらく結合アクションが正式な名称です。)
※VBAでいうJoin関数、PythonでいうString.join(List)のような役割です。
▲結合アクションのパラメータを入力します。「結合する配列」に、メンショントークン配列変数を選択します。「次を使用して結合」に、「,(カンマ)」を入力します。
メッセージの本文にStep10の結合アクションの出力を挿入します。その後ろに追記する形で送信するメッセージ本文を入力します。
これでフローは完成です。テスト実行してみます。
ディレクターの3名にメンション付きメッセージを送信することができました。
説明が長くなってしまったので、説明が分かりづらく混乱してしまった方は「フロー完成図」を見ながら作業お願いします!!!
(補足)結合アクションでやっていること
[“<at>LGu@tejilabo.onmicrosoft.com</at>”,”<at>MMgraham@tejilabo.onmicrosoft.com</at>”,”<at>NWhite@tejilabo.onmicrosoft.com</at>”]
▲メンショントークンを格納した変数には上記のように配列としてメンショントークンが入っています。
“<at>LGu@tejilabo.onmicrosoft.com</at>”,”<at>MMgraham@tejilabo.onmicrosoft.com</at>”,”<at>NWhite@tejilabo.onmicrosoft.com</at>”
▲配列変数はTeamsのメッセージの中で使用することができません。そのため結合アクションを使って配列の中の文字列を一旦全部取り出して,(カンマ)
を使って連結し一つの文字列にしています。
結合アクションは配列を文字列に結合する!
(補足)メンション作成でエラーがでました。
エンコードされたUPNはデコードが必要です
Power Automateのフロー実行時、ゲストメンバーのメンショントークン作成のところで実行エラーがでました。エラーが出た場合は下記を気にしてみてください。
チームメンバ・宛先が多くてメンショントークンが長くなってしまう・・・
ここまでお伝えしてきたメンションの方法の問題点として、宛先メンバーが増えるとメッセージの文頭に長々とメンバー名が羅列して冗長的で読みづらいメッセージになってしまうという問題があります。対処方法として、文末にメンショントークンを挿入して先頭に本文を持ってくるといいかもしれません。
解決策の例
▲こんな感じでメンショントークンを文末に挿入すると表示領域から見切れてくれることもありスッキリと見やすいです。メッセージ下部の「詳細表示」をクリックすると見切れていたメンショントークンを確認できます。
▲「詳細表示」をクリックして文章全体を表示してみるとこんな感じです。
Power Automateでチームメンション・チャネルメンションを使うには?
Power Automateの「ユーザーの@mentionトークンを取得する」アクションはチームメンション・チャネルメンションに対応していません。下記の記事ではGraph APIを使ってチームメンション・チャネルメンション付きメッセージを送信する方法を解説しています。Microsoft 365に付属するPower Automate for Microsoft 365環境でも利用できる方法です。
Power Automateを学ぶ方法
まとめ
以上、私が実践している複数人へメンションを送る方法でした。ひとつの例としてご参考になさってください!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。