次の方法で共有


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 コマンド を実行して、再試行してください。

Code

このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/PS/MetadataOperations/MetadataOperationsSample.ps1

対象

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

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

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

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

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

操作:

  1. sample_BankAccountPOST要求を送信して、ユーザー所有の新しい/EntityDefinitionsテーブルを作成します。
  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. 列がまだ存在しない場合は、sample_booleansample_BankAccount要求を送信して、POST テーブルの新しい/EntityDefinitions(LogicalName='sample_bankaccount')/Attributesブール型列を作成します。
  3. sample_booleanPUT要求を送信して、/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')ブール値列を更新します。
  4. sample_booleanを使用して、ブール値列のオプション ラベルを更新します。
  5. sample_BankAccount テーブルの sample_datetime datetime 列を取得して、存在しない場合は作成します。
  6. sample_BankAccount テーブルの sample_decimal 小数列を取得して、存在しない場合は作成します。
  7. sample_integer テーブルの整数列sample_BankAccount取得を試み、存在しない場合は作成します。
  8. sample_BankAccount テーブルの sample_memo メモ列を取得して、存在しない場合は作成します。
  9. sample_BankAccount テーブルの sample_money 金額列を取得して、存在しない場合は作成します。
  10. sample_choice テーブルのsample_BankAccount選択列を取得し、存在しない場合は作成します。
  11. sample_choiceを使用して、列に新しいオプションを追加します。
  12. sample_choiceを使用して、列のオプションの順序を変更します。
  13. sample_choiceを使用して、列のいずれかのオプションを削除します。
  14. sample_multiselectchoice テーブルのsample_BankAccount複数選択選択列を取得し、存在しない場合は作成します。
  15. sample_BankAccountを使用して、 テーブルの新しい Status オプションを作成します。

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

操作:

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

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

操作:

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

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

操作:

  1. sample_BankAccountを使用して、 テーブルが 1:N リレーションシップで参照される資格があることを確認します。
  2. contactを使用して、 テーブルが 1:N リレーションシップ内の他のテーブルを参照する資格があることを確認します。
  3. sample_BankAccountを使用して、1:N リレーションシップでテーブルを参照できる他のテーブルを特定します。
  4. sample_BankAccount要求をcontactに送信して、POST テーブルと/RelationshipDefinitions テーブルの間に 1:N リレーションシップを作成します。
  5. GET に要求を送信して、/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata から1:Nリレーションシップを取得します。

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

操作:

  1. POSTに要求を送信して、sample_BankAccountaccount テーブルの間に N:1 リレーションシップを/RelationshipDefinitionsで作成します。
  2. GET/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata要求を送信して、N:1 リレーションシップを取得します。

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

操作:

  1. sample_BankAccountを使用して、contactテーブルと テーブルが N:N リレーションシップに参加する資格があることを確認します。
  2. sample_BankAccountを使用して、contactテーブルと テーブルが N:N リレーションシップに参加する資格があることを確認します。
  3. sample_BankAccount要求をcontactに送信して、POST テーブルと/RelationshipDefinitions テーブルの間に 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)