◇はじめに
Microsoft社Power Platformの中のPower Automate上でグループチャットを作成しようとした際にフローが上手く動作せずにしばらくハマったため、その解決策を備忘録も兼ねて記事にしておきます。
※常に発生する問題かは切り分けできていないので、もし同じ問題にぶつかった方は本記事を参考にしてもらえればと思います。
◇開発環境等
- OS:
- Windows 11 Home(Ver:22H2)
- 契約ライセンス:
- Microsoft 365 Business Basic
- 使用ツール:
- Power Automate
- SharePointリスト
◇元々やりたかったこと
- SharePointリスト上にデータ種類を
ユーザーまたはグループ
とした列を作成する - このとき、
複数選択を許可
のチェックボックスをオンにする - 新規データ追加で、複数ユーザーを登録する
- Power Automate上でSharePointリスト上からユーザー列のデータを取得する
- ユーザー列に保存されていたユーザー全員を含めたグループチャットを作成する
- 作成したグループチャットにメッセージを投稿する
◇最初に試したフロー(❌失敗例)
Power Automate上で新たなチャットを作成する場合、チャットの作成
アクションを選択します。
チャットの作成
アクションを確認すると、
セミコロンで区切ったユーザーIDまたはメールアドレスを入力します
と記載されており、セミコロン区切りの文字列が必要なことが分かります。

セミコロン区切りの文字列を作るには、結合
アクションを使うことで対応できそうなことが分かったため、フローの構成としては、

- アレイ型の変数を用意
- SharePointリストのユーザー列の項目からメールアドレスを人数分取得して、要素ごとに格納
- アレイ型変数をセミコロン区切りの文字列変数に変換
といった流れにしました。
全体のフロー画面を以下に貼っておきます。
アレイ型の変数はUserMailList
という名前にしてあります。

ここまでで、チャットの作成に必要な文字列ができたため、チャットの作成
、チャットまたはチャネルでメッセージを投稿する
アクションを並べます。
なお、とりあえずチャットのタイトルはguid()
関数でランダム文字列化にしてますが、適宜変更可能です。

このとき、チャットの作成
アクションの追加するメンバー欄には、先ほどの結合
アクションの出力
ブロックを入力します。
また、メッセージを投稿するアクションでは、Group chat欄にカスタム値として会話ID
を選択します。

これで一通りフローが完成したので、手動テストを行ったところ、チャットを作成する
アクションでエラー(BadRequest
)が発生しました。
文字列の結合処理に問題があるかと思い、調べてみましたがその部分は問題なさそうでした。
ネットで色々調べると、フォーラムでも似たような報告は以前からされているようです。
既に改善された、いや、まだ問題が発生する
といったコメントがあって最終的な状態はよく分かりませんでしたが、その中にメールアドレスじゃなくてユーザー名を使うと解決するよといったコメントがあったため、そちらのやり方を試してみました。
◇改善したフロー(⭕成功例)
先ほどまでのフローをベースに、UPN名をリスト化するフローを追加しています。
アクションとしては、ユーザーの検索(V2)
アクションを使用します。
検索語句は先ほど同様、ユーザーメールアドレスを使用していますが、DisplayNameとかでも問題ありません。
ユーザー検索後、その中からUPN名を取得して配列変数に格納していきます(変数名はUserMailList
からUserList
に変更)。


このあとはさっきのフロー同様、チャットの作成
、チャットまたはチャネルでメッセージを投稿する
アクションを並べて実行することで問題なくフローが動作するようになりました。
◇おわりに
メールアドレスを使った際にエラーが出る原因は現時点でも解決していませんが、UPN名を使うことで対処できることが分かったので、備忘録として残しておきます。
同様の問題が出る場合、出ない場合の条件がありそうですが、もし同様の問題が発生した場合は今回のやり方を試してもらえればと思います。