くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

【PowerApps】前回登録したデータを初期値として表示する方法

・はじめに

以前、PowerApps で週報アプリを作成する機会があり、要件の一つとして、
 「前回自分が登録したデータを初期値としてアプリに表示したい」
というのがあり、なんとか形にできたので今回はその方法を記事にしました。

・目次

・実現したいこと

SharePointリストに格納されているアイテムから、自分が一番最後に登録したデータを PowerApps の フォーム に初期値として表示させる。

・サンプル リストの構成

サンプルとして、SharePoint で「週報」リストを作成しました。
リストには下表の列を用意しています。
f:id:kurakurattyo:20211220225138p:plain

列 表示名 列 内部名 列 種類 既定/カスタム
タイトル Title 1行テキスト 既定列
本文 Body 複数行テキスト(書式なし) カスタム
選択肢 Choice 選択肢(ドロップダウン) カスタム
登録者 Author ユーザーまたはグループ 既定列
登録日時 Created 日付と時刻 既定列

・実装方法

さっそく、サンプルアプリを作ってみましょう。

1.コネクタをアプリに追加する

 下記2つのコネクタをアプリに追加します。
  - Office365ユーザー コネクタ
  - SharePoint コネクタ (上記の 週報リスト に接続)

2.アプリの画面を構成する

SharePoint リストから1件のデータを表示させるため、Screen1 を下図のように作成します。

f:id:kurakurattyo:20211220225546p:plain

パーツ 備考
Form1 赤枠内が Form1 です。週報リストに接続します。
表示する列は「タイトル」「本文」「選択肢」
UserNameLabel アプリの使用者名を表示します。
使用者の前回登録値を取得する際にもこの値を利用します。

3.各パーツを設定する

----- Form1 の設定---------------------------------------------
DataSource は、週報リスト(SharePointリスト)を指定します。
アプリに表示する列は、「タイトル列」「本文列」「選択肢列」です。
※DataCardValue の番号は上図内と異なると思いますので、その点は読み替えてください。

DefaultMode は、新規作成用のフォームにしたいので「FormMode.New」にします。

f:id:kurakurattyo:20211220225918p:plain

----- UserNameLabel の設定---------------------------------------------
「UserNameLabel」の「Text」に下図の通りに設定します。
アプリ使用者の名前を表示させる目的と、使用者の前回登録値を取得するための条件としても利用するので、必ず設置するようにしてください。

Office365ユーザー.MyProfileV2().displayName

4.Screen表示時の処理を設定する

アプリの画面(Screen)を表示するタイミングで「前回登録したデータを取得する」処理を実行したいので、Screen1 の OnVisible に下記コードを設定します。

ClearCollect(ListCollection,Filter(週報リスト,UserNameLabel.Text in 登録者.DisplayName));
Set(lastbody,First(Sort(ListCollection,登録日時,Descending)));

上記の説明は下図の通りです。

f:id:kurakurattyo:20211220230310p:plain

これで、アプリの使用者が前回登録した最新のデータを、週報リストから取得して変数 「lastbody」 にセットすることができるようになりました。
以降は、この変数を利用して各所に初期値を設定していきます。

5.タイトル列に前回登録した値を表示する

タイトル 列には、「DataCardValue1」の「Default」で下図の通り設定します。

f:id:kurakurattyo:20211221231146p:plain

6.本文列に前回登録した値を表示する

本文列には、「DataCardValue6」の「Default」で下図の通り設定します。

f:id:kurakurattyo:20211221231226p:plain

7.選択肢列に前回登録した値を表示する

選択肢 列はコンボボックスです。
初期値を設定する場合は、選択肢 列である「DataCardValue4」のDefaultSelectedItemsを下図の通り設定します。

f:id:kurakurattyo:20211221231348p:plain

8.結果確認

上記まで完了後は、保存・公開してアプリをテストします。
アプリのプレビューでは Screen の更新ができないため確認ができませんので、ご注意ください。

注意事項

アプリ公開後の初回起動時はなぜか、うまくデータが読み込めませんでした。
アプリをF5キーなどで更新すると、以降は毎回データを読込んで初期値として設定されるようになります。

本記事もアイデアの一つとして参考にして頂けると嬉しいです。