列数が多くなると縦スクロールが増えて使いづらくなる編集フォームを、自動で並べ替えやフィルター処理が行われるようにして使い勝手を向上させます。
前編として、Power Queryを用いてSharePointリストの内部名や表示名などの情報をExcelに書き出す手順を説明します。
Power QueryでSharePointリストを読み込み
Excel と Power Query を使って SharePoint Online リスト列の表示名や内部名を一覧で表示するを参考に、ExcelにPower Queryを用いてSharePointリストの情報を書き出します。
Power Appsに読み込ませるために、SharePointサイト上のExcelで作業を行ってください。
新しいソース→ODataフィードと選択し、以下のエンドポイントURIを入力します。
{サイトURL}/_api/web/Lists/getbytitle('{リスト名}')/fields
サイト名は以下の画像でハイライトしている部分、/Listsより前です。リスト名はリストの名前を入力してください。
OKをクリックするとクエリの編集画面になります。
UIでの編集
必要な列のみ選択し、他の列の削除で不要な列を削除します。
有用そうな列は以下の通りです。
TypeAsString | 列の型(英語) |
TypeDisplayName | 列の型(日本語、環境依存) |
Title | 列の表示名 |
InternalName | 列の内部名 |
Description | 列の説明 |
Required | 必須列かどうか |
ReadOnlyField | 参照のみの列かどうか |
Hidden | 非表示列かどうか |
CanBeDeleted | 削除できる列か(=システム列) |
システム列以外の列にフィルターをかける場合は、CanBeDeleted列の▼をクリックしてFalseのチェックを外します。
ユーザーが作成した列のみ表示されました。
タイトル列を使用している場合は、Title列の▼でタイトル列にチェックを入れてください。
URIを直接入力
クエリの画面で削除したくない列を選択する作業って地味にストレスですよね。この記事を書いているときも3回誤クリックしました。
ODataフィールドの入力の際、以下のエンドポイントURIを入力することで同じ出力が得られます。
{サイトURL}/_api/web/Lists/getbytitle('{リスト名}')/fields?$select=InternalName,Title,TypeAsString,TypeDisplayName,Description,Required,ReadOnlyField&$filter=CanBeDeleted eq true
取得したい列やフィルター操作が決まっている場合はこのURIを直接入力してください。
インデックス列・カテゴリー列の追加
Power Apps上で並べ替えを行うためにインデックス列を、フィルターを行うためにカテゴリー列を追加します。
表示させたい順番に並べ替えから、列の追加→インデックス列→1からで1からのインデックス列を追加します。
列の追加→カスタム列の追加から、列の型がテキストの場合はテキスト、その他の場合はその他になるようにカテゴリー列を追加します。
Power Appsのアプリ上で以下の2つの列をもとにフィルターと並べ替えを行います。
今回はPower Queryでインデックスやカテゴリー列を追加しましたが、もちろんExcel上やPower Apps上で列を追加しても構いません。
クエリを保存、Power Apps読み込み用テーブルを作成する
閉じて更新をクリックしてクエリを保存すると、以下のようにデータがExcelに書き出されます。
Power Queryで出力されたテーブルはPower Apps, Power Automateで読み込めないので、別テーブルを作成する必要があります。
列名とデータを一行だけ選択し、コピーします。
Excelの画面で別シートを作成し、追加したシートにペーストします。
ペーストしたら、その範囲をテーブルとして書式設定します。
A2セルに={テーブル名}[@列名]を入力し、オートフィルで値を参照させます。
テーブル名も忘れずに正しく命名しておきましょう。
更新時必要な操作
リストのデータが更新された際には、
- クエリの更新
- Power Apps読み込みテーブルのテーブル範囲の更新
を行う必要があります。忘れないように対応しましょう。
活用方法
後編では、書き出したExcelをもとに編集フォームのカードの並べ替えやフィルターを行う方法を紹介します。
上記以外にもPower Automateのフィルタークエリで内部名を調べる手間を省いたり、ドキュメントにも流用できると思います。
コメント