SPO複数選択肢列を 複数選択コンボでフィルターする実装方法

はじめに

今回はSPOリストを使い、複数選択可能な選択肢を使ったケースで、そこに含まれるものでフィルターする実装のご紹介となります。
ただし、SPOリストはもとより部分一致検索が出来ないため、委任対象外の実装とはなりますのでご了承ください。

※実装は2,3年前にやったものですが、先日コミュニティで質問があり回答の機会があったのであらためて記事にしてみました。

NOTE※あらかじめデータ行数上限以下(500-2000)で絞ったものに対してや、委任警告が出ていても2000件以下なので問題ないというケースで利用できる実装と言えます。

TIPS自己流で色々やっていたらできたという内容なのでオススメ実装!というわけではないです。
ご了承ください。
もしかしたらもっといい方法があるのかもしれませんね。

実装例:サンプルアプリ

以下2,3年ほど前に作成した自社のアプリですが、複数選択肢を使用して、検索時も複数選択可能なコンボボックスとして、選択した項目が含まれるものでフィルターする実装を行ったアプリです。

こちらは以前自社ブログで紹介しているので、その他の部分など気になる方はこちらもご参考ください。
【ワンランク上のPower Apps 開発】人材スキル管理アプリを作成・運用・改修 | 株式会社エヌサーフ (nsurf.co.jp)

複数選択肢について

SPOリストの場合、選択肢の設定で複数選択可能とすることが出来ます。
今回のリストの場合、スキル(言語)、などの列を複数選択可能な選択肢列としています。

NOTE複数選択可能な選択肢とした場合、この列をフィルターしようとすると委任対象外の実装となります。
※このアプリでは2000件以下のデータで利用する前提のため、こういった実装を行っています。

複数選択肢×ドロップダウンの場合

複数選択肢列へのフィルターはFilter関数で「 in 」を使います。

まずはシンプルにドロップダウンで選択した項目が含まれる場合の実装例です。

CodeFilter(人材スキルリスト,Dropdown1.Selected in ‘スキル(言語)’) または
Filter(人材スキルリスト,Dropdown1.Selected.Value in ‘スキル(言語)’.Value) 
※どちらでもいいです。
→選択した値が スキル(言語)列に含まれるものを取得となります。

以下の例では「asp.net」が複数選択肢に含まれるものがヒットします。

NOTEin の部分に委任警告が出ていますね。お伝えの通りSPOでは含む検索(部分一致検索)のin は委任対象外となりますのでやむなしです。

複数選択肢×複数選択コンボボックスの実装

上記だとシンプルですが、フィルターする側をコンボボックスで複数選択した場合、
複数選択コンボボックスに含まれるものが、SPO複数選択肢に含まれるものを対象とする。
という頭がこんがらがる内容となります💦

以下この部分のみ抜き出すと以下のような感じで実装出来ます。

CodeFilter(人材スキルリスト,
   LookUp(‘スキル(言語)’,Value in FGengoCombo.SelectedItems.Value) in   FGengoCombo.SelectedItems
)

Code書式で言うとこんな感じです。
Filter(<SPOリスト>, LookUp(<選択肢列> ,Value in <コンボボックス>.SelectedItems.Value) in  <コンボボックス>.SelectedItems )

解説的には、複数選択肢をLookupしてコンボボックスに含むもの(in) を、さらにコンボボックスに含む(in)ものとして 実装しています。うまく説明できないですが、こうやると動画のようにちゃんと想定通り動きます(笑)

で、以下のように複数の列に対して統合的に実装したのが以下です。指定がない空の列はすべてを対象、指定がある場合は指定値(複数対応)を含むもの、各列はAND条件でつないでいます。その他Sortなども入っている実装ですね。

以下のようにすると、C#、またはJava、またはVB.netが出来て、かつ、要件定義も出来る人をフィルター出来ています。

同様のシンプル目な実装サンプル

少しシンプルにしたサンプルです。

以下では、チェックボックスで選択したものをColというコレクションに入れています。
ギャラリーでは上記のサンプルのようにスキル(言語)をLookupでColに含まれるもの、それがColに含まれるもの
としています。実装としては上記のサンプルと同様ですね。

Codeチェックボックスのコレクション:Col
ギャラリーのフィルター:Filter(人材スキルリスト,LookUp(‘スキル(言語)’,ThisRecord in Col) in Col)

おわりに

ということで、コミュニティで質問があり、数年前に実装した上記内容について、実装部分は記事にはしてなかったので、今回記事にしてみました。
委任対象外となる実装なので、2000件以下のデータで利用する前提となる点が残念ですが、問題ない場合は使える実装ですので、必要な方はご参考にしてみてください。それでは~!

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

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

ヨウセイ

ヨウセイ

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

関連記事

コメント

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

CONTENTS