欲しいアプリは自分で作る!

Power Platform や Azure などを利用して作成した業務アプリや趣味アプリなどをご紹介します。

Teams + Power Apps なら文字列の部分一致検索が委任可能!! ただし列名に注意ね!

待ってました。 for Office 365 プランで部分一致検索ができることを。




どうも、じゅんじゅんです。


先日より、Teams 上で Power Apps アプリが作成できるようになりました!
概要は Microsoft 吉田さんの記事をご覧ください。 memo.tyoshida.me

Teams 上の Power Apps で利用するデータソースは、吉田さんの記事にあります通り「CDS Project Oakdale」というもので、Common Data Services がベースになっています。


…ということは、ですよ!

SharePoint リストでは委任問題に引っ掛かっていたテキスト列の部分一致検索(Search 関数)が使えるのでは…?!
これができれば、いわゆるナレッジ登録&検索アプリが構築できるのでは?!

ということで、やってみました。


目次


委任問題とは

これまでは、for Office 365 プラン利用者における Power Apps のデータソースはおそらく SharePoint が主流で、「SharePoint と言えば委任問題」と言われるほど一昔前は多くの委任問題にぶつかってこられたかと思います(※個人の感想です)。

委任問題とは
qiita.com

委任できるかどうかは、データソース、列の型、利用関数によって異なります。
(以下は2019年3月時点での委任可否の表であり、現時点のものとは異なる場合があります)


2020年6月には、これまでずっと頭を悩ませてきた

  • ユーザー列
  • 日付列
  • 選択肢列

も委任可能となり、個人的には残すは Search、つまりテキスト列の部分一致検索かなと思っていました。

残念ながら現時点では SharePoint リストにおけるテキスト列の部分一致検索はできませんが、Teams + Power Apps ならできるのでは?!というのが今回の検証です。

事前準備

早速、実験してみましょう。ということで、まずはアプリとテーブルの作成から。

  1. まずはアプリの作成から。 f:id:jn-kodama:20200926154906p:plain

  2. チームを選んで "作成" をクリック。 f:id:jn-kodama:20200926154950p:plain

  3. アプリ名を指定して、"保存" をクリック。 f:id:jn-kodama:20200926155039p:plain

  4. 早速テーブルを作りましょう。 f:id:jn-kodama:20200926155134p:plain

  5. テーブル名を入力して、作成"をクリック。 f:id:jn-kodama:20200926155715p:plain

  6. 列の追加で、"内容" という名のテキスト列を作成します。 f:id:jn-kodama:20200926155914p:plain

  7. 適当に10レコードを手入力します。データが保存済みになったら、右上の "×" でテーブル追加画面を閉じます(Teams の "×" じゃないので注意)。 f:id:jn-kodama:20200926160305p:plain

  8. 準備が整いました。 f:id:jn-kodama:20200926161333p:plain


Search 関数を試してみる!

ということで、早速画面の左側にある Gallery (BrowseGallery1) の items を Search 関数でフィルタリングしてみます。

Search 関数は以下のように記述できますので、ここでは "内容" 列に "めも" が含まれるレコードを抽出してみましょう。

Search(テーブル名, 検索文字列, 検索する列名)

参考:Filter、Search、および LookUp 関数 - Power Apps | Microsoft Docs

f:id:jn-kodama:20200926163604p:plain


… "内容" 列ってどれやねん!!


これは SharePoint リストの時も同様なのですが、テーブルの列名を日本語で作成してしまうと列名がエンコードされてしまい探すのが大変なので、最初に英語で列を作成してから後で日本語に変更するとよいです(あるいはそのまま英語で実装してしまう)。

エンコードされた列を探してもよいのですが、せっかくなので対策してみましょう。
先ほど作成したテーブルを編集します。 f:id:jn-kodama:20200926162301p:plain

新しく "detail" 列を追加します。 f:id:jn-kodama:20200926162423p:plain

元の "内容" 列の中身を全選択してコピーし、"detail" 列に貼り付けます。 f:id:jn-kodama:20200926162605p:plain f:id:jn-kodama:20200926162632p:plain

元の "内容" 列を削除します。 f:id:jn-kodama:20200926162706p:plain

列名を日本語に直したい方は列の編集からどうぞ。 f:id:jn-kodama:20200926162803p:plain f:id:jn-kodama:20200926162854p:plain

アプリ作成に戻って、再び Gallery の items で Search 関数の挿入にトライ。
列名に特有の接頭語が付きますが、英語なら一目で分かりますね。 f:id:jn-kodama:20200926163721p:plain

7レコード目(ま行)が取れました。委任警告も出ていないので、テキスト列の部分一致検索は無事成功です。 f:id:jn-kodama:20200926163915p:plain


おわりに

弊社でも、これまでナレッジ蓄積系のアプリは部分一致検索ができないことから諦めてきましたが、これで活用の幅がさらに広がりそうです。

現時点では複数行テキスト列やユーザー列が CDS Project Oakdale で提供されていないなど、まだちょっと気になる点がいくつかありますが、何よりテーブル作成からアプリ作成まで Teams 上で完結できるのが、とにかく便利ですね!今後に益々期待です。



欲しいアプリは欲しい人が作る時代へ。
何かヒントになれば幸いです。


参考文献

docs.microsoft.com

なお、Teams + Power Apps における実際のアプリ作成デモは先日吉田さんが開催された勉強会の様子(以下)が参考になるかと思います。 www.youtube.com