Power Fx の使用
Power Fx は Microsoft Power Platform 全体で使用されるローコードの言語です。 Power Apps キャンバス アプリを構築する場合は、Power Fx を理解されているかもしれません。 また、Power Fx は、Power Apps モデル駆動型コマンド バー コマンドを使用したカスタム ロジックの実装にも使用できます。 コマンド バー ロジックでは完全な Power Fx 言語機能のサブセットを使用できます。
コマンドをカスタマイズする際に、Power Fx を使用できる場所が 2 つあります。
OnSelect - このロジックは、ユーザーがコマンド ボタンを選択した場合に実行されます。
Visible - このロジックは、アプリを実行しているユーザーにコマンドを非表示にするか表示するかを確認するために実行されます。
OnSelect の構成
コマンドが選択される場合に Power Fx ロジックを使用するには、アクション プロパティが式を実行するように構成されていることを確認します。
構成されている場合は、数式バーが有効であり、Power Fx ロジックを入力できます。 このオプションは新しいコマンドに対して既定となっています。 ただし、式バーが無効になっている場合は、ロジックに JavaScript を使用するコマンドの使用が一般的です。
ページの上部にある数式バーを使用して、カスタム ロジックを入力できます。
既定の式は単に「true」です。これでは、何も起こりません。 選択された場合に任意のアクションを実行するには、コマンドに対して独自のロジックを入力する必要があります。
また、開いている数式バーを選択して、変更する数式バーに焦点を当てることができます。
ユーザーがコマンドを選択すると、フォーム データに対する保留中の変更が保存され、OnSelect ロジックが実行されます。 この順序により、コマンドの実行時点でのデータの状態が一貫したものになります。
表示方法の構成
既定では、コマンド バーに追加された新しいコマンドが表示されます。 式の条件を表示するコマンドの表示方法プロパティを変更することで、コマンドを表示するかどうかを決定するために評価される式を入力できます。
ページの上部にある数式バーを使用して、カスタム ロジックを入力できます。
既定の式は単に「true」であり、コマンドが単純に常に表示されることに注意してください。 「true」または「false」を決定するユーザー独自のロジックを入力する必要があります。 式を評価した結果が「false」の場合は、コマンドは表示されません。
表示方法の式は、その依存値のいずれかが変化した場合に再評価されます。 これにより、表示方法がデータおよびユーザー アクションの現在の条件に対応できます。 たとえば、グリッドの行が選択されるまでボタンを表示できない場合があります。
現在アクティブなデータ
コマンドの式を記述する際の重要な機能は、現在アクティブなデータを参照する機能です。 たとえば、コマンド バーがテーブル行のメイン フォームにある場合、現在アクティブなデータは行です。 コマンド バーがメイン グリッド上にある場合、現在アクティブなデータはグリッドに表示される行のテーブルになります。
選択したプロパティを使用して、現在アクティブなデータにアクセスできます。 選択したプロパティは、実行時に自動的に入力されます。 選択したプロパティには、単一の品目または品目のテーブルが選択されているか応じて、複数のフィールドを使用できます。
フィールド | タイプ | 説明 |
---|---|---|
品目 | DataSource からのレコード | 単一の行を選択されている場合、またはフォームに単一の行が表示されている場合にのみ使用できます。 入力されていない場合は、空白に設定されます。 たとえば、次の式は、アカウントの評価列の値を確認します。 Self.Selected.Item.'Account Rating'>20 |
AllItems | DataSource のレコードのテーブル | DataSource から選択されたすべての行。 たとえば、次の式は選択した件数を確認します。 CountRows(Self.Selected.AllItems) > 0 |
都道府県 | 列挙型 | ホスティング コントロールが編集 (=0)、新規 (=1)、または表示 (=2) 状態にあることを示します。 |
未保存 | ブール値 | Selected または SelectedItems に未保存の変更がある場合は「true」を返します。 それ以外の場合は「false」を返します。 |
データ ソースからのデータ
Selected プロパティからのデータの操作に加えて、他の Microsoft Dataverse テーブルにデータの照会と保存もできます。 たとえば、次の手順でアカウント行の名前を変更します。
Patch(Accounts, Self.Selected.Item, {'Account Name': "New Account name"})
テーブル間のリレーションシップを使用して、関連行にアクセスすることもできます。 たとえば、次の式では、現在選択している品目の関連する循環予定へのアクセスを許可します。
Self.Selected.Item.'Recurring Appointments'
現在、Microsoft Dataverse は、コマンド ロジックから使用できる唯一のデータ ソースです。
一般的なシナリオ
コマンドで Power Fx ロジックを使用すると、発生さまざまなユース ケースを処理できます。 以下は、実装可能な一般的なユース ケースの例の一部です。
現在のデータに基づいて関連行を作成します。 たとえば、潜在的な営業案件の値に基づいて、一連のスケジュール済フォローアップ コールを作成します。
内部または外部の Web サイトに移動します。 たとえば、検索パラメーターとして行の会社名を渡している現在の会社のニュース サイトで検索を行うかもしれません。
現在の行のデータを変更します。 たとえば、アクティブなサービス顧客を追跡するサービス テーブルがあるかもしれません。 非アクティブな行でコマンドを選択すると、新しいサービスの状態を反映するように行にさまざまな値を設定することで、顧客へのサービスを再度アクティブにできます。
RecordInfo を使用して、コマンドが表示されるべきタイミングを確認します。 RecordInfo は、データ ソースの特定のレコードについての情報を取得するために使用できます。 たとえば、ユーザーが編集アクセス許可を持っているかを確認し、持っている場合はコマンドのみを表示できます。
コマンドに対して Power Fx ロジックの実装を開始すると、独自のアプリに対する他の一意のユース ケースを作成したいと考えるでしょう。