データ ソースの列を変更する

完了

Power Apps のデータ行を操作する際に、Filter や Search などの関数を使用すると、行自体を絞り込むことができます。 ただし、元のデータ ソースを変更せずに、それらの行内の列を操作しなければならないシナリオもあります。

選択した品目を追跡するショッピング カート アプリを作成するとします。 このような場合、元のデータ ソースに影響を与えることなく、Power Apps の内部にのみ一時列を持つことが重要になります。

幸い Power Apps では、この目的に合わせて調整された一連の関数が提供されています。 これらの関数を使用すると、基になるデータ ソースを変更することなく、アプリ環境内の列を変更して、データの処理方法や表示方法に影響を与えることができます。 これにより、変更 (ショッピング カート シナリオで選択した品目の追跡など) はアプリ内に限定され、実際のデータ ソースに影響を与えることはありません。 以下がその関数です。

  • AddColumns

  • DropColumns

  • RenameColumns

  • ShowColumns

AddColumns

AddColumns 関数ではテーブルに列が追加され、式はその列の値を定義します。 既存の列は変更されません。

上記のショッピング カート アプリの例では、AddColumns 関数を使用して、ユーザーが列を選択したかどうかを追跡するための列を追加します。 そのためには、ボタン コントロールの OnSelect プロパティに次の式を設定します。

ClearCollect(collectDigitalAssets, AddColumns(YourDataSource,"UserSelected", false))

このボタンを選択すると、式によって、YourDataSource のすべての行を含む collectDigitalAssets という名前のコレクションが作成され、ユーザーが選択済み という行が追加されます。 すべての行の列の値は false です。

次に、ギャラリー コントロールで、items プロパティを次のように設定します。

collectDigitalAssets

ギャラリー コントロールでは、UserSelected という名前の列にアクセスでき、その値は false です。 ここで、OnSelect で列を true に修正するボタンをギャラリーに追加します。

Patch(collectDigitalAssets, ThisItem, {UserSelected: true})

これにより、collectDigitalAssets コレクションでは、データ ソース内の列を変更することなく、ユーザーがアプリで選択した行を追跡できるようになります。

DropColumns

DropColumns 関数の動作は AddColumns の逆です。 この関数は、Power Apps 内のテーブルから列を削除するために使用します。 この関数は、アプリの機能用の複数の列を含むコレクションを Power Apps 内に作成するときに使用します。 これらの列はアプリの機能用のコレクション内にのみ追加され、データ ソースには送信されないので、データ ソースに送信後に列を削除するために DropColumns 関数が必要です。

たとえば、時間追跡アプリケーションで使用する collectTimeTracking という名前のコレクションを作成します。 このコレクションには、名前、勤務時間、勤務した日付、最終検査日、および状態の 5 つの列があります。 列名前作業時間、および作業日付では、従業員が作業した時間数に基づいて YourDataSource に保存するデータが追跡されます。 LastScreen 列と Status 列には、ユーザーがアプリを使用中にアプリの機能を提供するためのデータが格納されます。

ユーザーが作業を完了する場合に、情報をデータ ソースに保存する方法の 1 つは、Collect 関数を使用することです。 データ ソースの間で列が一致する場合、Collect 関数ではすべての行がコレクションに書き込まれます。 この例では、データ ソースの列は NameHoursWorkedDateWorked のみです。 LastScreenStatus はデータ ソースには存在せず、保存する必要はありません。 DropColumns を使用して、適切な列のみをデータ ソースに送信することができます。

Collect(YourDataSource, DropColumns(collectTimeTracking, "LastScreen","Status"))

この関数は、列 LastScreenStatus を削除した後、コレクション collectTimeTracking の内容をデータ ソース YourDataSource に書き込みます。 なお、DropColumns では、コレクション collectTimeTracking は変更されませんでした。 LastScreen 列と Status 列は、コレクション内で引き続き使用できます。

RenameColumns

データ ソース内ではなくアプリ内で列の名前を操作する必要がある場合は、RenameColumns 関数を使用します。 一般的な用途は、編集することができないデータ ソースの列名を参照するのが難しい場合、または「Date」などの予約語が列名で使用されている場合です。

コレクションにデータを格納するときに、この関数を使用できます。 Collect 関数では、データ ソースの内容を取得してコレクションに保存できることに注意してください。

Collect(collectProjectData, ProjectDataSource)

この式では、データ ソース ProjectDataSource からのすべてのデータ行を格納する collectProjectData という名前のコレクションが作成されます。 データ ソースに Date という名前の列がある場合、その列の名前を ProjectDate に変更すると、Power Apps での作業がしやすくなります。 これを行うには、上記の例ではなく次の式を使用します。

Collect(collectProjectData, RenameColumns(ProjectDataSource, "Date","ProjectDate"))

同じ行があります。 これで、Date という名前の列が、コレクション内では ProjectDate になります。 このように、アプリでの混乱が少ない名前を列に柔軟に付けることができます。

ShowColumns

ShowColumns は、データ ソースの列を表示するために使用します。 返された 1 つの列だけを表示したいコントロールで使用します。 一般的な例は、ドロップダウン コントロールです。

ドロップダウン コントロールでは、Microsoft Dataverse テーブルなどのデータ ソースを使用して、オプションを提供するのが一般的です。 データ ソースを items プロパティに設定すると、列が複数ある場合、表示する列が Power Apps によって選択されます。 ShowColumns 関数を使用して、表示する列を選択できます。

顧客という名前のデータソースを使用して、顧客名列から顧客の名前を表示するとします。 ドロップダウン コントロールの Items プロパティで次の式を使用します。

ShowColumns(Customers, "CustomerName")

この式では、Dropdown 列に顧客名列の値が表示されます。

ShowColumns では複数の列を返すこともできます。 ドロップダウン コントロールでは最初の列だけが表示されますが、取得したすべての列にアクセスできます。 次の例では、ID 列を ドロップダウン コントロールに追加する方法を示します。

ShowColumns(Customers, "CustomerName", "ID")

ドロップダウン には ドロップダウン コントロールの CustomerName 列の値だけが表示されますが、この式では、ID 列の値にアクセスできます。 ラベル コントロールを画面に追加し、テキスト の値を次のように設定します。 ドロップダウンの名前が「Dropdown1」ではない場合は、それに応じて式を編集します。

Dropdown1.Selected.ID

この式では、ドロップダウン コントロールで選択された行の ID 列の値が返されます。