3.6K Views
April 06, 24
スライド概要
奇想天外ビリビリ☆Power Apps同好会
2024/4/6 写経のススメ~学ぶは真似ぶから始まる~
ヨウセイ登壇資料です。
ユーザー検索コンボボックス、大量データコンボボックスの
項目増加、検索項目増加、フィルター対応などのTips
イベントページ
https://biribiri.connpass.com/event/314653/
blog:https://youseibubu.com/
YouTube:https://www.youtube.com/@Yousei-PowerApps
キャンバスアプリTips コンボボックス関連 表示項目増加、検索対象増加、 フィルター関連、大量マスタ対応など 奇想天外ビリビリ☆Power Apps同好会 写経のススメ~学ぶは真似ぶから始まる~ 2024/4/6:ヨウセイ
自己紹介 ヨウセイ 一般職からSharePoint、C#系の技術者へ。そこからPower Platform技術者へ。 主にシステム開発や技術支援をやっています。得意分野は以下です。 Power Apps Power Automate キャンバスアプリ モデル駆動型アプリ Dataverse Power Pages Power Automate for Desktop SharePoint
自己紹介 Microsoft認定: Power Platform Solution Architect Expert 他取得 EXAM:PL‐600、PL‐400、PL‐200、PL‐100、PL‐900 • BLOG:Power Apps Tips ログ (youseibubu.com) • YouTube:ヨウセイTube - Power Apps同好会 • X(旧Twitter):https://twitter.com /youseibubu • Qiita:https://qiita.com /youseibubu • Docswell:https://www.docswell.com /user/yousei
アジェンタ • ユーザー検索の調整 ① 表示情報量を増やす • ユーザー検索の調整 ② 検索対象項目を増やす • ユーザー検索の調整 ③ 特定の条件でフィルター制御する • 大量データマスタ プルダウンの調整系
ユーザー検索の調整 ① 表示情報量を増やす キャンバスアプリ Tips ユーザー検索の調整 ① 表示情報量を増 やす | Power Apps Tips ログ (youseibubu.com)
ユーザー検索の調整 ①表示情報量を増やす Office365ユーザーコネクタを使用しての例となります。 Office 365 Users – Connectors | Microsoft Learn コネクタの取得上限は 1000までです。 ※部署では直接検索でき ない(取ってきてから)
ユーザー検索の調整 ①表示情報量を増やす Office365ユーザーコネクタを使用してコンボボックスに指定します 基本以下のようにすればテキスト検索でユーザーを検索できます 例として未選択時でも一覧が出るよう isSearchTermRequiredをFalseにしています。 ここは用途に合わせて調整
ユーザー検索の調整 ①表示情報量を増やす コンボボックスのフィールドを調整します。 最初のままだと空白になっているかと思います。フィールドからレイアウト(人)、 主要なテキスト、副次的なテキスト、SearchField を指定します。 ※画像は取ってきていないので使われません。SPOのユーザー列の場合なら使えます
ユーザー検索の調整 ①表示情報量を増やす 表示項目は基本2つまで コンボボックスの表示で2重線や人のレイアウトの場合、メインと別にもう一つ副次的なテキスト を出せます。3つ目はありませんので2つまで 今回の例だとDisplayName、副次的なテキストはMailにしています。よくある構成
ユーザー検索の調整 ①表示情報量を増やす 副次的なテキストに表示する項目を増やす! AddColumnsを使って、元々の情報に部署+メールの列を追加してあげます。 以下、元々の実装にAddColumnsで「dep&mail」という列を追加し、中身は部署とメールを | で区切ったものです。 //部署とメールをひとつの文字列として列を追加する例 AddColumns( Office365ユー ザー.SearchUserV2({searchTerm:Self.SearchText,isSearchTermRequired:false}).value ,”dep&mail”,Concatenate( Department ,” | “,Mail))
ユーザー検索の調整 ①表示情報量を増やす コンボボックスの副次的なテキストに指定する 次にコンボボックスのフィールドの選択で作成した「dep&mail」が出てきているので、選択し てあげます。
ユーザー検索の調整 ①表示情報量を増やす その他要素も対応可能 上記ではよく使う部署やメールを入れていますが、取得出来ている値であればOK また2つではなく3,4つくっつけることも出来ると思いますが、そうすると表示量がかなり多くな るのでみずらいかもしれません。 メインの部分を調整も可能ではありますが、検索時や既定値をはめるときに同じようにしないとい けないなど実装がややこしくなるので、副次的なテキストの部分を調整くらいにするのがよさげ
ユーザー検索の調整 ② 検索対象項目を増やす キャンバスアプリ Tips ユーザー検索の調整 ② 検索対象項目を増 やす | Power Apps Tips ログ (youseibubu.com)
ユーザー検索の調整 ② 検索対象項目を増やす 検索する項目はSearchFieldで決定 ※Office365ユーザーコネクタの場合は性、名でもやってくれる この状態で検索すると、表示名であれば ヒットしますが、メールアドレスではヒッ トしません。 ただ性、名への前方一致はこの状態でも効 いてくれました。 (365コネクタ側でやってくれている感じ)
ユーザー検索の調整 ② 検索対象項目を増やす メールアドレスやUPNでも検索できるようにする! SearchTermの対象は、表示名、名、性、メール、メールにニックネー ム、UserPrincipalName(UPN)。これらであれば検索対象と出来る
ユーザー検索の調整 ② 検索対象項目を増やす フィールド設定だと1つしか選択できないがプロパティからは複数の設 定が可能! フィールドの設定からはプルダウンで1つ SearchFieldプロパティに項目を追加できる!
ユーザー検索の調整 ② 検索対象項目を増やす SearchFieldプロパティに項目を追加する! カンマ区切りで他の項目を追加します。メールアドレスと、名、性、UPN メールアドレスや性、名、表示名 でもヒットするようになった!
ユーザー検索の調整 ② 検索対象項目を増やす SearchFieldプロパティに項目を追加する! →普通のリスト参照などの場合でも同様の手順で対象列を追加できる 補足:UserPrincipalName(UPN) ※User().EmailはUPNを取るよ EmailとUPNは同一の場合も多いですが、異 なる設定とされているテナントもあります。 その場合、UPNとEmailは一致しないため ユーザー特定の処理などでは注意が必要 (UPNは必ず一意なのでそちらが推奨)
ユーザー検索の調整 ③ 特定の条件でフィルター制御する キャンバスアプリ Tips ユーザー検索の調整 ③ 特定の条件でフィル ター制御する | Power Apps Tips ログ (youseibubu.com)
ユーザー検索の調整 ③ 特定の条件でフィルター制御 SearchUserV2で取得できる件数は最大値は999件まで 1000人以下の組織であれば問題ないがそれ以上の場合は影響あり 1000人以上だと部署を指定 してその部署の人を取ってく るではすべて取れない →検索クエリの対象に部署は ないため、999まで取って来 てからのフィルターとなるた めあぶれる人が出る Office 365 Users – Connectors | Microsoft Learn
ユーザー検索の調整 ③ 特定の条件でフィルター制御 フィルター取得後のフィルタリングは可能 さとうさんなどでフィルター後1000人以下になっていれば、指定部署の 人だけにするなどは可能(ある程度名前やアドレスがわかるケース)
ユーザー検索の調整 ③ 特定の条件でフィルター制御 取得後に自部署でフィルター さとうさんなどでフィルター後1000人以下になっていれば、指定部署の 人だけにするなどは可能です。(ある程度名前やアドレスがわかれば) //太字のFilter部分 自分の部署の人のみにフィルター AddColumns( Filter( Office365ユー ザー.SearchUserV2({searchTerm:Self.SearchText,isSearchTermRequired:false}).value ,Department = Office365ユーザー.MyProfileV2().department) ,”dep&mail”,Concatenate( Department ,” | “,Mail) ) サンプル少ない。。が 一応自部署の人のみが出ている
ユーザー検索の調整 ③ 特定の条件でフィルター制御
特定の役職者のみやメールアドレスありなど任意にフィルター
他の要素も絡めてフィルター可能
//太字のFilter部分 自分の部署の人のみにフィルター、かつメール有、役職指定
AddColumns(
Filter(
Office365ユー
ザー.SearchUserV2({searchTerm:Self.SearchText,isSearchTermRequired:false,top:1000}).value
,Department = Office365ユーザー.MyProfileV2().department,!IsBlank(Mail),JobTitle="取締役")
,"dep&mail",Concatenate( Department ," | ",Mail)
)
サンプル少ない。。が
フィルター後人のみが出ている
ユーザー検索の調整 ③ 特定の条件でフィルター制御 Automate だと 1000人以上の取得も可能! ※何人まで行けるかは未検証 アプリに結果を渡す実装も可能(複雑化&低速となるとは思われる) プルダウン検索などでAutomateキック、全量取得後に部署でフィルターしたユーザー情報を JSON形式でアプリに返すイメージ(有償ならそのまま通常範囲ならParseJSONで) 他にも独自のユーザー情報リストを 事前に用意しておく、や数回に分け て取得して合わせるなど、どうして もやりたかったら一応方法はある 解決済み: ユーザーの検索 1000 制限フロー - Power Platform コミュニ ティ (microsoft.com)
大量データマスタ(SPO) プルダウンの調整系 大量データマスタ プルダウン表示について(コンボボッ クス) | Power Apps Tips ログ (youseibubu.com)
大量データマスタ プルダウンの調整系 大量マスタを参照する場合のTips SPOでのサンプルデータ 検証用のサンプルリスト 5万レコード 内容は適当
大量データマスタ プルダウンの調整系 • ドロップダウンだとデータ行制限を上げても500まで (そもそも検索機能はない) そもそも検索できないので 500以下が妥当。 あらかじめ別の要素で フィルターした結果を出す。 少量を選択する用途で使う
大量データマスタ プルダウンの調整系 • コンボボックスは2,000まで(データ行制限まで) • SPOだと委任警告が出る。検索しても上位2,000までしかヒットしない SPOの場合 Dataverseの場合 SPOだと内部でSearchが使われているため委任警告が出るもよう Dataverseを指定した場合は委任警告は出ない
大量データマスタ プルダウンの調整系 検索なしでスクロールすると2000件までは出てくれる 検索も2000までならヒットしたが、それ以上はヒットしない。 SPOの場合 内部で使われるSearch機能が委任対象外 のため上位2000件以降のヒットするレ コードが取れない
大量データマスタ プルダウンの調整系 コンボボックスへの独自フィルターを実装する ItemsをSelf.SearchTextでフィルターする設定にする //コンボボックスの(検索エリアへの入力値)がSelf.SearchTextで取れるので それでフィルターする Filter(LargeMaster,StartsWith(Tilte,Self.SearchText)) SPOのため委任対象の前方一致 (StartsWithでフィルターしている)
大量データマスタ プルダウンの調整系 コンボボックスへの独自フィルターを実装する 前方一致検索となるが、2000以上もヒット、最後の50001も取れてる
大量データマスタ プルダウンの調整系 コンボボックスへの独自フィルターを実装する さらに以下のように調整すれば警告および無駄な取得がなくなる 先ほどの実装でも検索が空の場合に取ってきているので まだ委任警告が出ている //検索が空の場合以外にフィルターして取ってくる実装に調整 If(!IsBlank(Self.SearchText), Filter(LargeMaster,StartsWith(Tilte,Self.SearchText)) )
大量データマスタ プルダウンの調整系 コンボボックスへの独自フィルターを実装する 警告が消え、未入力の状態だと何も表 示されないようになる。 検索時に取得する挙動となり、 無駄な取得コストを低減も出来る
大量データマスタ プルダウンの調整系 ①表示項目を増やす(副次的テキスト)、②検索項目を増やす ③追加のフィルターなどの対応ももちろん可能 以下は2列表示にして検索項目を追加した例
モダンだと怪しい動きだった(2024年2月時点) 本記載内容はあくまで従来のコンボボックスへの対応とご認識ください。 モダンのコンボボックスで同実装を試したところ、近い動きはしたが、 SearchTextの判定タイミングがおかしいのが、タイミングがずれて出てきたり、 表示位置が変わったり、そもそもSearchFieldプロパティもないので 他の列に対してのフィルターも出来ず。表示列も1つのみ。
全体のまとめ ① コンボボックスを拡張することで操作性や情報量が調整出来る よ! ② 部署でのフィルタは1000人以上の場合注意が必要。ある程度の フィルターは可能ですよ! ③ 大量のデータをコンボボックスで扱う場合は独自フィルターを 実装するなど調整が必要です(SPO)
おまけ:コミュニティやゲー ムアプリ紹介など
Power Fx 数式リファレンス(カテゴリ別) Power Fx をカテゴリ別にまとめた記事をアップしています Power Apps Power Fx 数式リファレンス カテゴリ別チートシート | Power Apps Tips ログ (youseibubu.com) 定期的に更新しています 初学者の方の学習や更新の チェックなどに活用ください モデル駆動型関連の記事はまだ少ないですが今後増やしていきます BLOG:Power Apps Tips ログ (youseibubu.com)
いろんなPower Platform のコミュニティ いろんなコミュニティに参加するとタメになるお話を聞けたり、 同志に出会えたり、自分もアウトプットしていこうと思えるように Power Apps Weekly News - connpass やまさんとアキラさんがPower Appsの最新アッ プデート情報をYouTube Liveで確認してくれる 気ままに勉強会 - connpass たなさん主催、豪華運営陣でPower Automateや その周りの情報を共有、勉強会してくれる おうじゃさんといっしょ - connpass おうじゃさん主催のPower Apps系 わいわいもく もく会 Japan Power Platform Game Builders - connpass コルネさん主催のPower Platformでゲームを作っ てみたり発表したりできる会 ほかにもいろいろ! Connpassで検索してみよう!
JPPGB ゲームコンテスト 【JPPGB】ゲーム作成コンテスト #0 でパワスロを作って大賞・デザ イン賞をいただきました! 【JPPGB】ゲーム作成コンテスト #0の 作品が公開されました! - コルネの進捗 や備忘録が記されたなにか (hatenablog.com) 【パワスロ】JPPGB ゲーム作成コンテ スト #0 パワスロで大賞ならびにデザイ ン賞をいただきました! | Power Apps Tips ログ (youseibubu.com) 記事からアプリのダウンロード (GitHubから)もできます
JPPGB ゲームコンテスト キャンバスアプリで作られたゲームがたくさん!日本人すごい! 【Power Apps】ボンバーマンを作ってみよう! プレイヤー を配置する - コルネの進捗や備忘録が記されたなにか (hatenablog.com) 主催コルネさんが以前に作 成されたボンバーマン 【仕様紹介編】Power AppsでChatGPTと協力して リバーシを作ってみた | PPログ (powerplatformnikki.com) PPログさんのリバーシ CPUなどのロジックがすごい!
JPPGB ゲームコンテスト https://x.com/MMishima_3/status /167370126 8509065219?s=20 Masahiro Mishimaさんのラジコン! すごすぎてアゴが外れます おうじゃさんのチーズキャット ハンズオンもやっていただけました! (23) 【JPPGB #7】Makoto Maedaさんことおうじゃ さんによるCheeseRatのハンズオン! - YouTube Power Appsで横スクロールア クションゲームを作る ジャン プ編 - Power Appsの使い方 (hateblo.jp) おうじゃさんの5年ほど前に作られ た横スクロール!コインドック
ゲーム作りは役に立つ!(はず) https://twitter.com/Kodam aJn/status/162039623199 3491456 児玉さんのSlide Puzzle with rolling ball 他にもたくさん! DaiさんのAIに夢を乗せたドリームプロレス! 試合の流れや対戦結果をAIに生成させて夢の対戦が実 現!インタビューや新聞記事までも生成したり読み上 げたりというこだわりようです! (個人所有物の個人範囲の利用のみ) JPPGB #8 - connpass
ゲーム作りは役に立つ!(はず) 海外の有識者の方々がゲーム作ったりしてますが、いやいや日本 の皆さんすごいです! ゲームを作ると、デザイン面や動きのある実装、ロジカルな処理 などのお勉強にもなります。(きっと) そのまま業務アプリに利用できるものや考え方など応用できる実 装があったりします(おそらく) 無駄にはならないと思いますので、お時間があるときにでも試し に作ってみたりするのものいいかもしれません(たぶん)