Power Appsを使っていると、社内のユーザーを検索してメールアドレスを取得したり、コンボボックスでユーザー候補を絞り込んだりしたい場面があると思います。ところが、同じコードを貼り付けただけなのに、あるアプリではOffice365Usersで検索ができて、別のアプリではまったく検索結果が出ないという現象に遭遇した人も多いのではないでしょうか。僕も最初にこの問題が起きたときは「同じコードを使っているのになんで動かないんだろう」と不思議に思いました。そこで、今回は「Power AppsのOffice365Usersコネクタを使ったユーザー検索がうまく動作しないときの原因と対策」をまとめました。画面上やコード上では正しく見えていても、内部的にはデータソースの紐づけが切れていたり、貼り付け手順で不整合が起きてしまったりと、少し意地悪なバグが潜んでいるケースがよくあります。そんなトラブルを解決するための手順や、スムーズにユーザー検索が行えるコンボボックスの設定ポイントなどを紹介します。これを読めば、妙に動かないコードと格闘せずに済むはずなので、Power Appsを活用するときのチェックリストとして参考にしてみてください!
なぜ同じコードを貼り付けても動かないのか

同じ式を持つコンボボックスをコピーして貼り付けただけなのに、あるアプリではユーザー検索できるのに、別のアプリではまったく検索結果が出ないというケースがあります。見た目やコードが全く同じでも、Power Appsの内部参照がズレてしまうことが原因になりやすいです。
Power Appsの内部参照不整合とは
Power Appsでは、データソースを追加すると内部で一意の参照が生成されます。ところが、コード側では文字として「Office365Users」や「Office365ユーザー」という名前を書いているだけで、実際にはアプリ内部で紐づける処理が行われます。手順がズレると、この紐づけがうまくいかず、表面的には同じように見えても裏で連携が失敗している場合があります。
よくある順序ミスの例
- コンボボックスのコード(
Office365Users.SearchUserV2(...)
など)を先にコピペ - そのあとでOffice365Usersコネクタ(データソース)を追加
- コードの文字列上は一致しているが、内部では別の参照として登録されている
この流れだと、いくら発行(公開)やCtrl+F5(再読み込み)をしても、新しいデータソースと貼り付け済みのコードがかみ合わないままになってしまうことがあります。
コードは同じでも動かないときに試したいチェックポイント

1. コネクタを再追加する
Power Apps Studioの[データ]タブで、当該コネクタ(Office365UsersやOffice365ユーザーという名前)を一度削除し、再度追加してみます。これにより、内部参照が再生成されるため、紐づけがうまくいくことがあります。
手順の例
- Studioの左側メニューから「データ」をクリック
- コネクタ一覧で「Office 365 Users」や「Office365ユーザー」の接続を削除
- 再度「+データの追加」で「Office 365 Users」コネクタを追加
- コンボボックスなどに設定している式を一度ダミーに変更し、再び戻す
これで多くの場合は挙動が変わります。
2. コンボボックスの名称を確認する
コピー元では「ComboBox1」でも、貼り付け先では「ComboBox2」や「ComboBox_1」など、別名になっているかもしれません。式の中で参照している名前が一致しないと、検索テキストを取得できず結果が表示されません。
例
Items = Office365Users.SearchUserV2({searchTerm: ComboBox1.SearchText}).value
Bアプリのコンボボックス名称が「ComboBox2」になっているなら、
Items = Office365Users.SearchUserV2({searchTerm: ComboBox2.SearchText}).value
に修正する必要があります。
3. DisplayFieldsとSearchFieldsの設定を手入力でやり直す
コンボボックスには「DisplayFields」「SearchFields」というプロパティがあり、表示に使う列名や検索対象にする列名をリスト化しています。貼り付け時にこれらが空になったり、エラー状態になっていると、Office365Usersの検索結果が表示されないことがあります。
一度ダミー設定にして戻す
- DisplayFieldsを
["Mail"]
だけにする - SearchFieldsを
["Mail"]
だけにする - 保存後、もう一度
["Mail","DisplayName"]
に直す
これで内部的にリセットされるケースもあります。
4. ダミー値を使って更新を促す
Itemsプロパティを次のように一時的に変え、保存してから元に戻すと、参照不整合が解決することがあります。
// 一時的に
Items = [
{ Mail: "dummy@sample.com", DisplayName: "仮ユーザー" }
]
// リセット後に元に戻す
Items = Office365Users.SearchUserV2({searchTerm: ComboBox1.SearchText}).value
「これはバグなの?」と感じたときの考え方
Power Appsは頻繁(ひんぱん)にアップデートされており、細かい動作が変わることも多いです。貼り付けた時点のタイミングやStudioのバージョンによっては、コネクタと式の紐づけが自動的に修復されないケースもあり、ユーザー側から見ると「バグ」に近い挙動に感じます。
とはいえ、開発チームが想定している作業フローは「先にデータソースを追加→そのあとコードやコントロールを設定する」流れです。それを逆にやると、裏でズレが起きても自動復旧が走らないようです。このような不具合ともいえる現象は、シンプルに「そういうことがあるんだな」と認識しておくとトラブルシュートが早くなります。

根本的な解決策と運用時の注意点

1. 「先にコネクタ追加」→「あとでコード」の順序を守る
一番シンプルな予防策は、Office365Usersのような外部コネクタを使うときは先にデータタブから追加しておくことです。その後にコンボボックスなどのコントロールを配置し、式を貼り付けると、内部参照がスムーズに働きます。
2. 名前の整合性を常にチェックする
コンボボックスやギャラリーなど、Power Appsはコントロール名がかぶらないよう自動で連番を振ることがあるため、自分で名前をカスタムするときも含めて、式との整合性を日頃から意識しましょう。
3. プロパティパネルとコードビューを両方活用する
コードビューでコピーして貼ったとしても、プロパティパネルで設定内容を再確認しておくと、不整合が分かりやすいです。とくに「DisplayFields」「SearchFields」が想定通りかどうかは要チェックです。
4. 突発的なバグに遭遇したら一旦リセットを試す
保存やCtrl+F5では直らない場合、今回紹介したようにコネクタを一度削除→再追加したり、Itemsプロパティをダミーに変更→元に戻すなどのリセット操作を試してみると解決に近づきやすいです。
コード例:Office365Usersを使ったユーザー検索コンボボックス

// ComboBoxのItemsプロパティ
Items = Office365Users.SearchUserV2({
searchTerm: ComboBox1.SearchText
}).value
// 検索対象となるフィールド(SearchFields)
SearchFields = ["Mail","DisplayName"]
// 表示に使うフィールド(DisplayFields)
DisplayFields = ["Mail","DisplayName"]
// 選択を1人に限定
SelectMultiple = false
// コンボボックスのプレースホルダー
InputTextPlaceholder = "Eメール"
このように設定することで、ユーザーが入力を始めたタイミングでAzure Active Directory(ADの略)のユーザー情報をOffice365Usersコネクタが検索し、リストアップしてくれます。ただし、アプリを利用するユーザーがメール検索の権限やライセンスを持っていないと結果が返されないことがある点にも注意しましょう。
まとめ

同じコードでも、Power Appsの内部で不整合が起きるとユーザー検索が動かないケースがあります。見た目的には間違いがなくても、データソース登録のタイミングやコントロール名の微妙なズレが原因で、実行時にエラーや空結果が返ってしまうのです。そうした現象に遭遇したら、「コネクタの再追加」「コンボボックスのItemsプロパティをダミー化して再設定」「DisplayFieldsやSearchFieldsを手入力でやり直す」などの方法を試してみましょう。最終的には、バグに近い挙動として諦めずに「そういう事例もある」と割り切り、手順を整えて開発するとトラブルを回避しやすくなります。オフィスのメンバー全員分のメールアドレスやディスプレイネームを検索する環境を作っておくと、実務でとても便利になるので、ぜひ上手にコンボボックスとOffice365Usersを使いこなしてみてください。
コメント