Web API テーブル スキーマ操作サンプル (PowerShell)

この PowerShell サンプルは、Dataverse Web API を使用してテーブル、列、リレーションシップの定義を作成および変更する操作の実行方法を示しています。

このサンプルは、Web API テーブル スキーマ操作サンプルで詳細に説明されている Dataverse の操作とコンソール出力を実装し、Dataverse Web API PowerShell ヘルパー関数 を使用して認証を管理し、一般的な操作を実行するための再利用可能な関数を提供します。 これらのスクリプトは、次の行で ドット ソーシング を使用して参照されます。

. $PSScriptRoot\..\Core.ps1
. $PSScriptRoot\..\TableOperations.ps1
. $PSScriptRoot\..\CommonFunctions.ps1
. $PSScriptRoot\..\MetadataOperations.ps1

注意

このサンプルは Windows、Linux、macOS で動作するはずですが、Windows でのみテストされています。

前提条件

このサンプルを実行する前に、これらのサンプルで使用される概念とパターンについて説明した次の記事を読む必要があります。

これらの記事には同じ前提条件があります。

以下をインストールするか、インストールされていることを確認する

インストールを検証する

  1. Visual Studio Code を開きます。

  2. ターミナル メニューで、新規ターミナル を選択します。

  3. Visual Studio Code ナビゲーション ウィンドウで、PowerShell 拡張子の アイコンを選択します。

  4. Visual Studio Code ターミナル ウィンドウで、次のスクリプトをコピーして貼り付けます。

    Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString()
    Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).Version
    
  5. Enter キーを押します。 出力は、次の例のようになります。

    PowerShell Version: 7.4.0
    PowerShell Az version: 11.1.0
    

このような結果が表示されない場合は、前提条件をインストールまたは更新してください。

さらに必要なこと

  • Dataverse 環境に有効なユーザー アカウント
  • 接続に使用したい Dataverse 環境への URL。 検索方法については、開発者向けリソースを表示 をご覧ください。 次のようになります: https://yourorg.crm.dynamics.com/、これは yourorg.crm が異なります。
  • PowerShell スクリプト言語の基本的な解釈

このサンプルを実行する方法

  1. PowerApps-サンプル リポジトリをクローンまたはダウンロードします。

  2. Visual Studio Code を使用して /dataverse/webapi/PS/MetadataOperations/MetadataOperationsSample.ps1 ファイルを開く

  3. この行を編集して、接続したい環境の URL を使用します。

    Connect 'https://yourorg.crm.dynamics.com/' # change this

  4. (オプション) このサンプルが作成するレコードを削除したくない場合は、$deleteCreatedRecords 変数を $false に設定します。

  5. F5 を押してサンプルを実行します。

  6. サンプルを初めて実行すると、ブラウザ ウィンドウが開きます。 ブラウザ ウィンドウで、認証に使用する資格情報を入力または選択します。

別のユーザーとして接続するには、Disconnect-AzAccount コマンド を実行して、再試行してください。

コード

このサンプルのコードは、次から入手できます。PowerApps-Samples/dataverse/webapi/PS/MetadataOperations/MetadataOperationsSample.ps1

実際の動作

このサンプルには 11 つのリージョンがあります:

セクション 0: 発行者とソリューションを作成

操作:ソリューション レコードと関連する発行者レコードを作成します。

注意

このサンプルで作成されたすべてのソリューション コンポーネントは、エクスポートできるようにソリューションに関連付けられます。 名前付きメッセージのない操作の場合、この関連付けは、値として設定されたソリューションの一意の名前を設定する MSCRM.SolutionUniqueName 要求ヘッダーを使用して作成されます。 ソリューション コンポーネントのすべての名前には、発行者のカスタマイズの接頭辞を使用して接頭辞が付けられます。

セクション 1: テーブルの作成、取得、更新

操作:

  1. POST 要求を /EntityDefinitions に送信して、新しい sample_BankAccount ユーザー所有テーブルを作成します。
  2. GET 要求を /EntityDefinitions(LogicalName='sample_bankaccount') に送信して、作成されたテーブルを取得します。
  3. PUT 要求を /EntityDefinitions(LogicalName='sample_bankaccount') に送信して、テーブルを更新します。

セクション 2: 列の作成、取得、更新

操作:

  1. GET 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')に送信して、sample_boolean ブール値の列を取得しようとします。
  2. 列がまだ存在しない場合は、POST 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributesに送信して、sample_BankAccount テーブル用に新しい sample_boolean ブール値の列を作成します。
  3. PUT 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean') に送信して、sample_boolean ブール型の列を更新します。
  4. UpdateOptionValue アクション を使用して、sample_boolean ブール列の値のオプション ラベルを更新します。
  5. sample_BankAccount テーブルの sample_datetime datetime 列を取得して、存在しない場合は作成します。
  6. sample_BankAccount テーブルの sample_decimal 小数列を取得して、存在しない場合は作成します。
  7. sample_BankAccount テーブルの sample_integer 整数列を取得して、存在しない場合は作成します。
  8. sample_BankAccount テーブルの sample_memo メモ列を取得して、存在しない場合は作成します。
  9. sample_BankAccount テーブルの sample_money 金額列を取得して、存在しない場合は作成します。
  10. sample_BankAccount テーブルの sample_choice 選択列を取得して、存在しない場合は作成します。
  11. InsertOptionValue アクションを使用して、sample_choice 列に新しいオプションを追加します。
  12. OrderOption アクションを使用して、sample_choice 列のオプションの順序を変更します。
  13. DeleteOptionValue アクションを使用して、sample_choice 列のオプションの一つを削除します。
  14. sample_BankAccount テーブルの sample_multiselectchoice 複数選択列を取得して、存在しない場合は作成します。
  15. InsertStatusValue アクションを使用して、sample_BankAccount テーブルに新しいステータス オプションを作成します。

セクション 3: グローバル OptionSet の作成および使用

操作:

  1. POST 要求を /GlobalOptionSetDefinitions に送信して、新しいグローバル選択肢の名前付き sample_colors を作成します。
  2. GET 要求を /GlobalOptionSetDefinitions(<id value>) に送信して、sample_colors グローバル選択肢を取得します。
  3. POST 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes に送信し、グローバル選択肢に関連付けることによって、sample_colors グローバル選択肢を使用して sample_BankAccount テーブルの新しい sample_colors 選択肢列を作成します。

セクション 4: 顧客リレーションシップの作成

操作:

  1. CreateCustomerRelationships アクションを使用して、sample_BankAccount テーブルに新しい sample_customerid 顧客列を作成します。
  2. GET 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_customerid') に送信して、sample_customerid 顧客列を取得します。
  3. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata.` に送信して、顧客列に作成されたリレーションシップを取得します。

セクション 5: 一対多の関連付けの作成と取得

操作:

  1. CanBeReferenced 関数を使用して、 sample_BankAccount テーブルが 1:N の関連付けで参照できるかどうかを確認します。
  2. CanBeReferencing 関数を使用して、contact テーブルが 1:N の関連付けで他のテーブルを参照できるかどうかを確認します。
  3. GetValidReferencingEntities 関数を使用して、他のどのテーブルが、1:N の関連付けで sample_BankAccount テーブルを参照できるかを確認します。
  4. POST 要求を /RelationshipDefinitions に送信して、sample_BankAccountcontact のテーブル間に 1:N の関連付けを作成します。
  5. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata に送信して、1:N の関連付けを取得します。

セクション 6: 多対一の関連付けの作成と取得

操作:

  1. POST 要求を /RelationshipDefinitions に送信して、sample_BankAccountaccount のテーブル間に N:1 の関連付けを作成します。
  2. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata に送信して、N:1 の関連付けを取得します。

セクション 7: 多対多の関連付けの作成と取得

操作:

  1. CanManyToMany 関数を使用して、sample_BankAccount テーブルと contact テーブルが、N:N の関連付けに参加できるかどうかを確認します。
  2. GetValidManyToMany 関数を使用して、sample_BankAccount テーブルと contact テーブルが、N:N の関連付けに参加できるかどうかを確認します。
  3. POST 要求を /RelationshipDefinitions に送信して、sample_BankAccountcontact のテーブル間に N:N の関連付けを作成します。
  4. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata に送信して、N:N の関連付けを取得します。

セクション 8: 管理ソリューションのエクスポート

操作: セクション0: 発行元とソリューションの作成 で作成したソリューションを、ExportSolutionアクションを使用して、このサンプルで作成した項目を含めてエクスポートします。

セクション 9: サンプル レコードを削除

操作: このサンプルで作成された各レコードへの参照は、作成時にリストに追加されました。 このサンプルでは、レコードは作成された順序と逆の順序で削除されます。

セクション10: 管理ソリューションのインポートと削除

操作:

  1. ImportSolution アクションを使用して、セクション 8 でエクスポートしたソリューションをインポートします。
  2. ソリューション テーブルをクエリして、インポートされたソリューションの solutionid を取得します。
  3. solutionid を使用して、インポートされたソリューションを削除します。

クリーンアップ

デフォルトでは、このサンプルで作成されたすべてのレコードが削除されます。 サンプルが完了した後に作成されたレコードを表示する場合は、deleteCreatedRecords 変数を false に変更すると、レコードを削除するかどうかを確認するメッセージが表示されます。

参照

Dataverse Web API を使用する
テーブル定義による Web API の利用
Web API のサンプル
Web API 基本操作のサンプル (PowerShell)

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。