概要
SharePointに作成したリストから、PowerAppsアプリを作る方法について、自己学習メモとしてQiita記事にまとめます。
事前準備:SharePointにリストを作成
今回は、SharePointのリストを作成する際に、テンプレートとして事前に用意されている案件管理
をそのまま使っています。
PowerAppsアプリを作成する
SharePointのリストからPowerAppsのアプリの作成
SharePointの案件管理
リストを表示した状態で、画面上部のメニューから PowerApps -> アプリの作成を選択。
これだけで、案件管理リストをデータソースとしたPowerAppsのアプリが作成されます。
動かしてみる
どんな感じでアプリが動作するのか動かしてみます。
PowerAppsStudioの画面右上にある再生ボタン(右向きの三角ボタン)を押下するか、F5キーを押下します。
機能としては
- 新規登録
- 詳細表示
- 更新
- 削除
- 検索一覧
という一通りのメンテナンス機能が備わっています。
また、画面デザインを自分で行っていないのですが、デフォルトで一覧表示項目などを配置してくれるため、何もしないでこれだけのクオリティの機能が作れるのは魅力的です。
PowerAppsをカスタマイズする
検索条件のカスタマイズ
BrowseGallery1(垂直ギャラリー)を左ペインから選択すると、画面上部の数式エリアに以下のような式がセットされていることが確認できます。
SortByColumns(Filter([@案件管理], StartsWith(Title, TextSearchBox1.Text)), "Title", If(SortDescending1, Descending, Ascending))
上記の式のFilter
で指定されている部分をみると、StartsWith(Title, TextSearchBox1.Text)
となっているため、Title項目(案件管理リストの「問題点」項目)の前方一致検索となっていることが分かります。
また、Title項目のみが検索対象の項目となっているため、他の項目は検索対象となっていません。
部分一致検索(あいまい検索)を実装する
Filter
関数の部分を以下のように修正しました。
キーワードとしてはin
を利用します。
SortByColumns(Filter([@案件管理], TextSearchBox1.Text in Title), "Title", If(SortDescending1, Descending, Ascending))
この警告は以下のことを表しているようです。
委任に関する警告です。この数式の強調表示された部分は、大きなデータ セットの列 "Title" で正常に機能しない可能性があります。
データ ソースは数式を処理できずに、不完全なデータ セットを返すことがあります。データ セットが不完全な場合、アプリケーションは正しい結果を返さないか、正常に機能しない場合があります。
これは、あいまい検索の場合、ヒットするデータが多いため、デフォルト設定の500行を超えて検索にヒットしてしまう可能性があり、正しい検索結果にならないかもしれないよ?という警告のようです。
ちなみに、500行の件数制限を変更するには、ファイル -> 設定 -> 詳細設定 -> 委任できないクエリのデータ行の制限 で設定を変更できます。
Filterで複数項目をOR検索
デフォルトでは、Title(問題点)項目だけが検索対象となっていましたが、案件の説明項目も検索対象としたい場合に、Title(問題点)項目または案件の説明項目に、検索キーワードが含まれていたらFilterする。
ということを実現する場合、以下のように指定します。
SortByColumns(Filter([@案件管理], TextSearchBox1.Text in Title || TextSearchBox1.Text in 案件の説明), "Title", If(SortDescending1, Descending, Ascending))
上記は案件の説明
というSharePointのリストの項目日本語名称をそのまま利用した場合。
実際、この案件の説明という日本語名称に対し、実は英語名称も設定されているらしく、以下のように指定することもできます。
SortByColumns(Filter([@案件管理], TextSearchBox1.Text in Title || TextSearchBox1.Text in Description), "Title", If(SortDescending1, Descending, Ascending))
Description
という項目が案件の説明項目に該当する英語名称となります。
では、どこでDescriptionという名前を確認するのか?
SharePointのリスト上では、確認する方法が分かりませんでした。
PowerAppsStudioの、Filter関数にカーソルを合わせた状態だと、以下のイメージのように、データソースの[@案件管理]の各項目データなどが確認でき、その項目名称(表示名称を日本語名称に変更する前のリスト作成時点の物理名)を確認することができます。
詳細画面のTitle項目の名前を変更する
SharePointのリストの制限として、必ず「Title」という項目を1つ必須項目として設けなければいけないというルールがある。
そのため、リストの表示上は問題点
という名前で表示されているものの、PowerAppsで扱う際にはTitle
となってしまっている。
詳細画面でTitleと表示されていても、なんとなく分かるものの、SharePointのリストと紐付きが分かりやすいように、表現を合わせておきます。
Titleの項目にカーソルを合わせて、ダブルクリックすることで編集モードになるのですが、この状態で変更しても、その変更が永続化されることはありません。(一時的に変更されるだけです。)
項目名+項目データの組み合わせをカード
というオブジェクトでセットで管理されており、これがロックされている状態のため、プロパティ情報が変更できないみたいです。
変更するためには、Title項目のCardオブジェクトを選択し、プロパティを変更するためにロックを解除します
を押下します。
以下のように、DisplayName
プロパティの値を変更することで、表示名称をTitle→問題点に変更することができます。
補足
とりあえず、PowerAppsがどんなもんなのか、ちょっとだけですけど触ってみました。
Microsoftは、PowerAppsでアプリを開発することを、開発
とは言わず作成
と表現しているようです。
Non codingでアプリが作れるし、データソースとしてSharePointのリストや、OneDrive上のExcelデータなど、
さまざまなものが利用可能で、そのデータ定義から、デフォルトで基本的な機能を備えたアプリを簡単に作成
できるのは確かに魅力的でした。
ただ、それなりにお作法があるようで、そのお作法をある程度覚えておき、調べ方を把握しておかないと、全くリテラシーの無い人が、簡単にアプリを作成する。というレベルでは無いかなぁと思いました。
今回作成したレベルのアプリであれば、どちらかというとKintoneの方がより簡単に作成することができるイメージです。
KintoneもExcelで用意したデータをアプリ作成時にロードさせることで、簡単に検索一覧/詳細表示/登録/更新/削除/CSVインポート/CSVエクスポート機能などを備えたアプリが作成可能なため、PowerAppsよりは難易度低めかなと感じました。
逆に、Microsoft 365 Business Basicなど、すでにTeamsやSharePoint、Office製品をMicrosoft365で利用しており、
その利用料金の範囲内で、業務効率をアップさせるアプリの構築やデータの永続化、RPAのような部分的な自動化を実現することができるのはメリットだと感じます。
(Kintoneの場合は、1人あたり1,000円近く月額を払う必要があるので、Microsoft365に加えて契約すると、さらに費用が掛かってしまうため。)
Microsoft365を契約している企業の場合、このサービスを余すことなく活用できれば、高額な開発費用をかけたうえで、さらにメンテナンス費用もかかり、ランニングコスト(保守費用)をかけ、いずれ使われなくなるようなシステムを作ることなく、色々なことが実現できそうだなぁと思いました。
もちろん、自社の業務に構築するシステムを合わせる
ような開発方法を選んでしまうと、どんなものでも失敗するとは思いますが、Microsoft365が得意とするシステム開発に業務を合わせていく
スタイルであれば、かなりのパフォーマンスを発揮してくれるんだろうなぁと思います。
メモ
PowerApps向けの数式リファレンス
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/formula-reference