キャンバスアプリ Tips ユーザー検索の調整 ③ 特定の条件でフィルター制御する

はじめに

前回に続きOffice365ユーザーコネクタを使ったユーザー検索プルダウン(コンボボックス)でのTipsです。
前回の記事では検索ワードを増やす調整(メールアドレス、UPNなど)のTispでした。

今回は取得後で特定の部署(自部署の人のみ)やメールアドレスがある人のみなど、結果を再フィルタリングするTipsです。

Office365ユーザーコネクタ SearchUserV2でコンボボックスでユーザー検索

こちらは前回記事をご参考ください。

検索対象項目を増やすTipsはこちら

最初から部署のみなどではフィルター出来ない(1000件以上は)

SearchUserV2で取得できる件数ですが、最大値は1000件までとなっています。
※プロパティにTopがあり既定値、最大値が1000

そして検索の対象となる列は以下にある通り表示名やメールなどで部署などは入ってません。
なので組織が1000人以下かそれ以上かで結果が分かれます。

部署をSearchUserV2の検索には使えないので、取ってきた結果を部署でフィルターする形になります。
そのため1000人以下であればその中で部署フィルターすれば済みますが、1000人以上だとまず最初に取ってこれていないのでその後に部署フィルターしても含まれていません。
なので部署のみを指定して(ユーザー指定はせずに)その部署の人のみを取ってくる。ということは1000人以上の場合は出来ません。

NOTE以前から最大999件までしか返さないとなっていて上記のTopでも1000が既定値となっていますが、
実際それ以上に指定した場合にもっと取れるのか?は以前検証したときはNGでした。(数年前)
最近は検証していないので、もし最近だともっと行けるよ?などの情報があれば教えてください。

TIPS★ちなみにPower Automate版の方だと1000を超えて取得が出来るようです。
こっちでとってきて利用するなどの方法も要件によっては取れますね(遅そうだけども)

ちなみに今回は検証してませんが、skipTokenもあるのでこれを使ってループで全部取ってくるとかも出来なくはないのか??Automate側だと使えそうですね。ただPower Appsでコンボボックスでの使い道は思いつかないのでスルーします。

取得した後にフィルターすることである程度要件を満たせる

前提としてユーザー指定をせずに1000人を超える組織では部署フィルターは難しいということを踏まえたうえで、
何かしらユーザー情報を入力したうえでのフィルターは可能です。
要は自分の部署の佐藤さんを検索したいけども、他の部署にも沢山佐藤さんがいるし、同姓同名がいたりしてまちがえやすい。
などの時には、「佐藤」くらいまでフィルターをしたらさすがに1000人以下に絞れますよね。そのうえで部署を自部署のみとフィルターすれば自部署の佐藤さんのみを結果に表示が出来ます。

また、承認者を選択する場合に、まれにメールアドレスがなかったり別のアドレスをもつ同名アカウントがいたりするなどで、間違ったアカウントを選択してその後の承認処理がエラーとなる。などのケースもあります。

フィルターしたいケースの例

  1. 同じ名前の人が多くて自部署のサトウさんが見つけれない
  2. 同じアカウントでも複数メールアドレスがあったりする (間違えると申請フローがこける)
  3. 特定の役職以外は出したくない

など

取得後にフィルターをかけて特定条件で表示対象を絞る

ということで、以下のように取得後に部署が自部署の人のみにフィルターする例です。

自部署でフィルターする

このようにすれば佐藤さんが別部署にいても自部署の佐藤さんしか出てきません。
また1000人以下の状態であれば自部署の人のみが一覧表示されます。

Code//今回加えているのは以下の太字のFilter部分となります。
AddColumns(
    Filter(
        Office365ユーザー.SearchUserV2({searchTerm:Self.SearchText,isSearchTermRequired:false}).value
        ,Department = Office365ユーザー.MyProfileV2().department)
    ,”dep&mail”,Concatenate( Department ,” | “,Mail)
)

NOTE・上記ではそのままOffice365ユーザー.MyProfileV2を使っていますが、本来はあらかじめ変数などに保持しておいて使った方がコスパよいです。
・部署がわかるように前回記事で副次的テキストに部署&Mailをだしているのでその実装にあてはめてます。
この部分は前回記事をご確認ください。

NOTE★バージョン:3.24042以降ではAddColumnsの書式が変わっています。””なしで定義が必要なので読み替えてください。
詳細はこちらをご参照ください。

AddColumnsやSearch関数などで内部名を二重引用符(ダブルクォーテ)が不要になりました!(バージョン:3.24042.20以降) | Power Apps Tips ログ (youseibubu.com)

そうすると自分の部署の人のみが一覧に出ます。
現時点でユーザー検索していないので組織に1000人以上いる場合は取れていない人もいるはずです。
※サンプルがないのでうまく説明できませんが💦すいません。

この状態でユーザーを検索します。そうすると自部署で検索ワードにヒットする人のみが表示されます。
名前で検索しているのでその時点で1000件以下に絞られているはずです。その後のフィルターとなっているので、正しい結果が返ってきますね。もちろん他の部署の人は出ません。

以下ではメールアドレスで検索していますが、「h.」で始まるユーザーとして検索しています。

特定の役職者のみやメールアドレスありなど任意にフィルター

以下の例では通常メールアドレスはありますが、中にはないアカウントがあったりする組織もあるので、念のためメールアドレスあり、かつ役職を取締役のみにフィルターしています。かつ自部署のフィルターも残しています。
そうするとその条件に一致した人のみを結果に表示できます
※以下だと組織に1000人以下なのでユーザー指定せずに取れていますが1000人以上いる組織の場合、
ユーザー名やアドレスなどでの検索は必要です。

おわりに

ということで、今回はユーザー検索時のフィルターについて、組織の大きさによっては問題ないが、
大きな組織、企業だと部署ごとのフィルターにはクセが有ったりするのでその辺と、とはいっても
ある程度使えますのでそのご紹介という感じでした。(ある程度名前やアドレスがわかれば違った部署の人を指定しないですむなど)
上記は一例ですので、ご要件や用途に合わせて調整いただければと思います。

組織の規模やそもそもの要件によってネックとなる点もありますが、使えるケースも多くあるので
この辺りの知識もぜひ実装時の参考にしていただければと思います。それでは!

関連

前回の記事①:

前回の記事②:

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS