クライアントサイド スクリプトの概要

完了

クライアント スクリプトを使用すると、Power Apps のモデル駆動型アプリで JavaScript を使用してユーザー定義のビジネス ロジックを実装できます。 クライアント スクリプトは、宣言型のビジネス ルールが要件を満たさない場合に、代わりに使用されます。 クライアント スクリプトは、モデル駆動型のフォームで、フォーム イベントに反応して実行されます。 イベント ハンドラーとして登録される、一般的なイベントを次に示します。

  • フォームの読み込み

  • 列のデータの変更

  • フォームの保存

また、ボタンが押されたときにクライアント スクリプト関数を呼び出すように、コマンド バー ボタンを設定することもできます。

クライアント スクリプトを使用して実行する一般的なタスクには、次のようなものがあります。

  • 列の値をフォームから取得または設定する。

  • ユーザー インターフェイスの要素を表示または非表示にする。

  • 列ごとに複数のコントロールを参照する。

  • 1 つのテーブルで複数のフォームを使用できる場合にフォームを切り替える。

  • フォーム、ビュー、ダイアログ、レポートを開く。

  • ビジネス プロセス フローのコントロールを操作する。

製品に含まれるクライアント スクリプト API を使用して、データの操作、フォーム コンテンツの変更、アプリ動作の変更を実装する必要があります。 フォームは標準 HTML で作成されますが、フォームのコンテンツを JavaScript で直接操作することはできません。JavaScript でロジックを記述する際は、この点に注意してください。 クライアント スクリプティングのオブジェクト モデルでは、メソッドを使用してさまざまなフォーム コンポーネントと対話を行うことができます。 この方法であれば、フォームのレンダリングに使用するレイアウトや HTML を変更しても、ビジネス ロジックがその影響を受けることはありません。 また、ドキュメント化されたオブジェクトおよび関数以外は、随時変更または使用できなくなる可能性があるため、使用すべきではない点に注意することも重要です。 サポートの対象、および対象外のカスタマイズについて詳しくは、Dataverse 開発者ガイドの「Microsoft Dataverse アプリの作成の実践 - Power Apps」を参照してください。

ここで、クライアント スクリプト API のオブジェクト モデルと名前空間の構造について概要を示します。

クライアント スクリプト API オブジェクト モデルのすべての名前空間、Xrm、App、Device、Encoding、Navigation、Panel、Utility、WebAP、を示すスクリーンショット。

  • アプリ - アプリ レベルの任意の通知にイベント ハンドラーを追加できます。

  • デバイス - 画像、ビデオ、オーディオ、場所などのデバイス コンテンツへのアクセスを同意の下に許可します。

  • エンコード - HTML エンコード/デコード関数にすばやくアクセスできます。

  • ナビゲーション - ダイアログ、フォーム、ファイル、URL を開くなどの、プラットフォームに依存しないナビゲーション関数を提供します。

  • パネル - サイド ペインの静的領域に URL で示される Web ページを表示します。モデル駆動型アプリの Web クライアントのすべてのページで表示されます。

  • ユーティリティ - メタデータや複数のコンテキスト オブジェクトへのアクセス関数を含む、ユーティリティ関数のコレクションです。

  • WebAPI - Web API を使用してレコードを作成および管理したり、Web API のアクションや関数を実行したりするためのプロパティと関数を提供します。

次に、コンテキスト オブジェクトについて概要を説明します。コンテキスト オブジェクトはイベント ハンドラー パラメータとして使用したり、特定のメソッドを使用して取得したりできます。 これらのコンテキスト オブジェクトを使用すると、フォーム コントロールのレイアウトや特定のコントロールに依存するコードを記述する必要がなくなります。 次のコンテキストを操作します。

  • 実行 - コードを実行するイベント コンテキストを定義します。 フォームまたはグリッドでイベントが発生する際に実行コンテキストが渡されます。これをイベント ハンドラーで使用することで、formContext と gridContext を区別する、保存イベントを管理するなど、さまざまなタスクを実行することができます。

  • フォーム - フォームまたはフォーム上の項目への参照 (クイック ビュー コントロールや、編集可能なグリッド内の行など) を提供します。このフォームに対して現在のコードが実行されます。 フォーム コンテキストは、実行コンテキストの getFormContext() メソッドを使用して取得します。または、コードがリボン アクションから実行される際の引数に含まれています。 フォーム コンテキストには、次の重要な名前空間が含まれます。

    • データ - フォームに表示されるテーブル行のデータへのアクセスを可能にします。 保存や更新などの関数が含まれます。 例: formContext.data.entity.save("saveandnew");

    • ui - タブ、セクション、コントロールなど、フォーム上のコントロールの操作を可能にします。 非表示、表示、必須/任意の切り替えなどの操作がよく使用されます。 例: formContext.ui.refreshRibbon(true);

  • グリッド - サブグリッドやフォームに登録されているイベント ハンドラーにコンテキスト情報を提供します。

ここまでの概要説明で、クライアント スクリプト API を使用することで、クライアント側のロジックを非常に柔軟に実装できることを理解されたと思います。 ただし、クライアント側のスクリプトで実装されたロジックが強制されるのは、ユーザーがそのアプリケーションを使用している場合だけです。 多くの場合、クライアント スクリプトをサーバー側の実装とペアリングすることで、データや関数へのアクセスに使用するメソッドに関係なく、ロジックを常に実行することが必要になります。 このモジュールの残りの部分では、クライアント スクリプトの使用方法について詳しく説明します。