新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

Microsoft (Office365) PowerApps 使い方メモ (データソース・コレクション編)

以前、Office365 PowerAppsを触っていました。

PowerAppsは、かな~りとっつきにくいツールで、使い方をメモしておかなきゃ忘れてしまいそうだなと思いながら、放置していました。

アプリを修正しようと久しぶりに触ったら、案の定すっかり忘れていたので、今度こそ、 またいつ忘れても大丈夫なように、ハマったところを中心に、使い方をメモしておこうと思います。

量が多くなったので記事を下記の3つに分けていて、本記事は2つ目の記事になります。


Microsoft (Office365) PowerApps の、データソース・コレクションの使い方説明です。

データソースとは?

Excelファイルなど、PowerAppsの外部のテーブルデータを、データソースとして登録して、PowerApps内で使うことができます。

サンプルの作成

データソースの使い方は、初見では分かりにくいため、まずはテストのデータソースを用意して、ウィザードでサンプルアプリを作って、動きを見てみることをオススメします。

サンプルアプリでは、データソースのデータを一覧表示して、選択したレコードの詳細表示・値更新・削除、新規レコードの追加といった、必要最低限の機能が備わっています。

Microsoft (Office365) PowerApps 使い方メモ

Excelデータソースの作成

データというとExcelファイルがよく使われますが、ExcelファイルをそのままPowerAppsのデータソースにすることはできないので、注意が必要です。

Excelは値を好きなセルに自由に書けるのですが、自由が故に、データベースのテーブルのように、カラムとデータ型が決まったデータを表現するのには向いていません。

Excelには、データ範囲を指定して、カラムとデータ型が決まった、テーブルというものを作成する機能があります。

PowerAppsが読めるデータソースは、Excelファイル全体ではなく、そのExcelファイル内で作成されたテーブルが対象になります。

例えば下記のようなデータからテーブルを作成するとします。

Microsoft (Office365) PowerApps 使い方メモ

  • ヘッダーを含んだデータ範囲を選択
  • [ホーム]-[スタイル]-[テーブルとして書式設定]

Microsoft (Office365) PowerApps 使い方メモ

すると、選択範囲から「テーブル1」が作成されます

Microsoft (Office365) PowerApps 使い方メモ

テーブル名は[数式]-[定義された名前]-[名前の管理]で変更できます。

Microsoft (Office365) PowerApps 使い方メモ

サンプルアプリの作成

上記のExcelのテーブルからサンプルアプリを作成します。

  • ExcelをOneDriveにアップ
  • [PowerApps]-[+作成]-[データから開始]-[OneDrive]
  • OneDrive上のファイル一覧が表示されるので、アップしたExcelファイルを選択します。
  • Excelファイルにあるテーブル一覧が表示されるので、使用するテーブルを選択します。

Microsoft (Office365) PowerApps 使い方メモ

すると、そのテーブルを元に、

  • テーブルの情報一覧表示
  • テーブルで選択したレコードの詳細表示
  • テーブルで選択したレコードの値変更
  • テーブルに新しくレコードを追加

ができるアプリが作成されますので、アプリを作っていて分からないことがあれば、これを参考にするといいかと思います。

Microsoft (Office365) PowerApps 使い方メモ

1からデータソースを利用する

次に、サンプルではなく、自分で作ったアプリでの、データソースの使い方を説明します。

データソースの登録

  • [ビュー]-[データソース]でデータソースを登録

データソースはアプリに対して登録されます

Microsoft (Office365) PowerApps 使い方メモ

データソースの内容の一覧表示

PowerAppsには、データソースの内容を一覧表示するコンポーネントが「ギャラリー」と「データテーブル」の2つあるので、複数のレコードを表示するには、必ずどちらかを使います。

  • [挿入]-[ギャラリー]or[データテーブル]でコンポーネントを挿入
  • コンポーネントを選択して、そのコンポーネントで表示するデータを示す「Items」プロパティに、データソースを選択します(「テーブル1」)

すると、データソースの内容がコンポーネントに表示されます。

Microsoft (Office365) PowerApps 使い方メモ

データソースのカラムと表示コンポーネントの紐づけ

データソースのどのカラムを、どのコンポーネントに紐付けるかは、[プロパティ]-[フィールド]で行います。

Microsoft (Office365) PowerApps 使い方メモ

データソースを指定したけど、値が表示されない場合は、大抵この紐づけができていません。

「col1」と「col3」を入れ替えた図

Microsoft (Office365) PowerApps 使い方メモ

表示するデータのフィルタ・ソート

「Items」でそのままデータソースを指定すると、全てのデータが表示されます。

表示される内容をフィルタしたり、ソートする場合は、フィルタやソートの関数の結果を「Items」に指定するようにします。

例えば、「col2」でソートしたデータは「SortByColumns(テーブル1, "col2")」となります。

Microsoft (Office365) PowerApps 使い方メモ

データの詳細表示

データソースの1レコードの詳細表示は「フォーム」の「ディスプレイ」コンポーネントで行います。

  • [詳細設定]-[データ]-[DataSource]で、表示するデータを指定
  • [詳細設定]-[データ]-[Item]で、指定したデータのどのレコードかを指定

例えば、「ギャラリー」で選択したレコードの場合は、「Item」を「<ギャラリー名>.Selected」とします。

例えば、「col1」が「1」のレコードの場合は、「Item」を「First(Filter(<データソース名>, col1=1))」とします。

Filter()関数だけだと複数レコードのテーブルデータなので、そういったテーブルデータから1レコードを取り出すのに、「First()」関数をよく使います。

例)上の「Gallery1」で選択したレコードが、下の「FormViewer1」に表示される

Microsoft (Office365) PowerApps 使い方メモ

データの更新

データソースの1レコードの編集は「フォーム」の「編集」コンポーネントで行います。

  • [詳細設定]-[データ]-[DataSource]で、表示するデータを指定
  • [詳細設定]-[データ]-[Item]で、指定したデータのどのレコードかを指定

そして、このコンポーネントが表示される前に、EditForm(<コンポーネント名>)で、編集コンポーネントを初期化しておいてから、そのコンポーネントを表示します。 コンポーネントの初期化は、サンプルアプリのように、その画面の遷移の前で行うのがいいでしょう。

ユーザーがフォームで値を変更した後は、「SubmitForm(<コンポーネント名>)」で更新を実行します。すると、データソースの記録が更新されます。

更新の実行結果によって、コンポーネントの

  • OnSuccess
  • OnFailure

プロパティが呼び出されるので、更新成功・失敗後の処理は、ここに記載します。

データの新規登録

データソースの1レコードの編集は、更新同様、「フォーム」の「編集」コンポーネントで行います。

  • [詳細設定]-[データ]-[DataSource]で、表示するデータを指定

そして、このコンポーネントが表示される前に、NewForm(<コンポーネント名>)で、編集コンポーネントを初期化しておいてから、そのコンポーネントを表示します。 コンポーネントの初期化は、更新の時と同様、その画面の遷移の前で行うのがいいでしょう。

ユーザーがフォームで値を設定した後、「SubmitForm(<コンポーネント名>)」で新規登録を実行します。すると、データソースに新しいレコードが追加されます。

新規登録の実行結果によって、更新の時と同様、コンポーネントの

  • OnSuccess
  • OnFailure

プロパティが呼び出されるので、成功・失敗後の処理は、ここに記載します。

データの削除

レコードの削除は、フォームとは関係なく、下記の関数で行います。

  • 「Remove(<データソース名>, <削除するレコード>)」
  • 複数のレコードを削除する場合は、「RemoveIf(<データソース名>, <削除するレコードの条件>)}

続いてコレクションの説明です。

コレクション

コレクションとは?

コレクションとは、PowerApps内部で任意に作成できる、配列のグローバル変数のことです。

データソースと同じように扱うことができます。

コレクションの作成・追加・削除

  • 作成:「ClearCollect(<配列名>, {<項目名1>:<項目値1>, …})」
  • 値の追加:「Collect(<配列名>, {<項目名1>:<項目値1>, …})」
  • 削除:「Clear(<配列名>)」

複数の値を使用する場合は、Table()関数を使って値をまとめます。

ClearCollect(<配列名>, Table({<項目名1>:<項目値1>, …}, {<項目名1>:<項目値1>, …}, …))

データソースとの違い

コレクションはデータソースに似ているのですが、あまり自由度は高くなく、下記のことはできません。

  • 後から値の変更・レコードの削除はできない(Clear()で全て削除はできる)
  • Form関連は使えない

続いて、その他モロモロと、まとめですが、長くなったので別記事にしました。

www.kwbtblog.com