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

完了

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

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

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

  • AddColumns

  • DropColumns

  • RenameColumns

  • ShowColumns

AddColumns

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

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

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

ユーザーがこのボタンを選択すると、式によって、YourDataSource のすべての行を含む collectDigitalAssets という名前のコレクションが作成され、UserSelected という行が追加されます。 すべての行の列の値は 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))

この関数は、LastScreen 列と Status 列を削除した後、コレクション 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 関数を使用すると、このコントロールに表示する列を表示するよう指示できます。

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

ShowColumns(Customers, CustomerName)

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

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

ShowColumns(Customers, CustomerName, ID)

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

Dropdown1.Selected.ID

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