Power Appsで複数のデータソースからデータを引っ張ってきたい時はありませんか?
通常は1つのデータソースからしか情報は取得できませんが、コレクションを使えば、列名が違う場合でも、複数のデータソースを1つにまとめておいて、疑似的に1つのデータソースとしてギャラリーやテーブルに指定することも可能になります。
データをまとめる
データソースの作成
まずはソースとなるSharePointリストを作成します。
今回は果物、野菜、ドリンクの名前と数を記載した3つのリスト用意してみました。
Power Appsとの接続
Power Appsでアプリを作成後、データ欄から「SharePoint」を検索して選択。表示された任意のサイトから作成したリストを選択します。
このままでは1つずつしか確認が出来ないので、データをまとめて1つのデータとしてしまいましょう。
データソースを1つにする
アプリ(App)のOnstart に以下のコードを書いてまとめます。
まず、ClearCollect
でコレクションにmultiCollection
という1つのデータとして格納。ForAll
で各アイテムに対してループ処理を行い、新しいレコードを生成しています。
今回はそれぞれ名称の列をまとめて「品物名」としましたが、元の列名でも問題ありません。
実際のコード
ClearCollect(
multiCollection,
ForAll(
果物,
{
品物名: 果物名,
数: 数
}
),
ForAll(
野菜,
{
品物名: 野菜名,
数: 数
}
),
ForAll(
ドリンク,
{
品物名: ドリンク名,
数: 数
}
)
)
Power Appsではコレクションを実際に確認出来ます。左のメニューバーから[変数] > [コレクション] を選択し、ビューテーブルを表示してみましょう。中身を確認すると、データがコレクションにまとめて格納されています。
実際の表示
テーブルの場合
では、早速データを利用してみます。
アプリ上にデータテーブルを配置。
DataTable1のItemsには、先ほどのMulticollection
を指定します。プロパティのフィールドから各列を選択。
すると、テーブルにまとめたデータが表示されました。
ギャラリーの場合
ちなみに、ギャラリーに表示させたい時も同様です。
以下ではGallery1のItemsにMulticollection
を指定しています。ギャラリーにも複数だったデータが入りました。
まとめ
今回は2つのフィールド(列)で行いましたが、リスト上に多くの列が存在する場合や、列名がそれぞれ違う場合も、コレクション上に新しいレコードを作成することで全てまとめることが可能です。
色々やってみたいけれど、方法が分からないという方に届けば幸いです。
今後もPower Appsの手順についての記事をアップしていく予定ですので、どうぞご覧ください!
こんなことが知りたい、これが分からないなどのご希望・ご要望ありましたら教えてください。
もちろん、Power Apps開発についてのお声掛けもお待ちしております!