・はじめに
以前、PowerApps で週報アプリを作成する機会があり、要件の一つとして、
「前回自分が登録したデータを初期値としてアプリに表示したい」
というのがあり、なんとか形にできたので今回はその方法を記事にしました。
・目次
・実現したいこと
SharePointリストに格納されているアイテムから、自分が一番最後に登録したデータを PowerApps の フォーム に初期値として表示させる。
・サンプル リストの構成
サンプルとして、SharePoint で「週報」リストを作成しました。
リストには下表の列を用意しています。
列 表示名 | 列 内部名 | 列 種類 | 既定/カスタム |
---|---|---|---|
タイトル | Title | 1行テキスト | 既定列 |
本文 | Body | 複数行テキスト(書式なし) | カスタム |
選択肢 | Choice | 選択肢(ドロップダウン) | カスタム |
登録者 | Author | ユーザーまたはグループ | 既定列 |
登録日時 | Created | 日付と時刻 | 既定列 |
・実装方法
さっそく、サンプルアプリを作ってみましょう。
1.コネクタをアプリに追加する
下記2つのコネクタをアプリに追加します。
- Office365ユーザー コネクタ
- SharePoint コネクタ (上記の 週報リスト に接続)
2.アプリの画面を構成する
SharePoint リストから1件のデータを表示させるため、Screen1 を下図のように作成します。
パーツ | 備考 |
---|---|
Form1 | 赤枠内が Form1 です。週報リストに接続します。 表示する列は「タイトル」「本文」「選択肢」 |
UserNameLabel | アプリの使用者名を表示します。 使用者の前回登録値を取得する際にもこの値を利用します。 |
3.各パーツを設定する
----- Form1 の設定---------------------------------------------
DataSource は、週報リスト(SharePointリスト)を指定します。
アプリに表示する列は、「タイトル列」「本文列」「選択肢列」です。
※DataCardValue の番号は上図内と異なると思いますので、その点は読み替えてください。
DefaultMode は、新規作成用のフォームにしたいので「FormMode.New」にします。
----- UserNameLabel の設定---------------------------------------------
「UserNameLabel」の「Text」に下図の通りに設定します。
アプリ使用者の名前を表示させる目的と、使用者の前回登録値を取得するための条件としても利用するので、必ず設置するようにしてください。
Office365ユーザー.MyProfileV2().displayName
4.Screen表示時の処理を設定する
アプリの画面(Screen)を表示するタイミングで「前回登録したデータを取得する」処理を実行したいので、Screen1 の OnVisible に下記コードを設定します。
ClearCollect(ListCollection,Filter(週報リスト,UserNameLabel.Text in 登録者.DisplayName)); Set(lastbody,First(Sort(ListCollection,登録日時,Descending)));
上記の説明は下図の通りです。
これで、アプリの使用者が前回登録した最新のデータを、週報リストから取得して変数 「lastbody」 にセットすることができるようになりました。
以降は、この変数を利用して各所に初期値を設定していきます。
5.タイトル列に前回登録した値を表示する
タイトル 列には、「DataCardValue1」の「Default」で下図の通り設定します。
6.本文列に前回登録した値を表示する
本文列には、「DataCardValue6」の「Default」で下図の通り設定します。
7.選択肢列に前回登録した値を表示する
選択肢 列はコンボボックスです。
初期値を設定する場合は、選択肢 列である「DataCardValue4」の「DefaultSelectedItems」を下図の通り設定します。
8.結果確認
上記まで完了後は、保存・公開してアプリをテストします。
アプリのプレビューでは Screen の更新ができないため確認ができませんので、ご注意ください。
注意事項
アプリ公開後の初回起動時はなぜか、うまくデータが読み込めませんでした。
アプリをF5キーなどで更新すると、以降は毎回データを読込んで初期値として設定されるようになります。
本記事もアイデアの一つとして参考にして頂けると嬉しいです。