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 でのみテストされています。
前提条件
このサンプルを実行する前に、これらのサンプルで使用される概念とパターンについて説明した次の記事を読む必要があります。
- PowerShell と Visual Studio Code を使ったクイックスタート Web API
- PowerShell と Visual Studio Code を Dataverse Web API と使う
これらの記事には同じ前提条件があります。
以下をインストールするか、インストールされていることを確認する
Visual Studio Code をインストールします。 Visual Studio Code をダウンロードする を参照してください
Visual Studio Code 用の PowerShell をインストールします。 Visual Studio Code 用 PowerShell を参照してください
PowerShell 7.4 移行をインストールします。 Windows、Linux、macOS に PowerShell をインストールする を参照します
Az PowerShell モジュール バージョン 11.1.0 以降をインストールします。 Azure PowerShell をインストールする方法 を参照します
既存のインストールを最新のバージョンに更新 するには、
Update-Module -Name Az -Force
を使います
インストールを検証する
Visual Studio Code を開きます。
ターミナル メニューで、新規ターミナル を選択します。
Visual Studio Code ナビゲーション ウィンドウで、PowerShell 拡張子の アイコンを選択します。
Visual Studio Code ターミナル ウィンドウで、次のスクリプトをコピーして貼り付けます。
Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString() Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).Version
Enter キーを押します。 出力は、次の例のようになります。
PowerShell Version: 7.4.0 PowerShell Az version: 11.1.0
このような結果が表示されない場合は、前提条件をインストールまたは更新してください。
さらに必要なこと
- Dataverse 環境に有効なユーザー アカウント
- 接続に使用したい Dataverse 環境への URL。 検索方法については、開発者向けリソースを表示 をご覧ください。 次のようになります:
https://yourorg.crm.dynamics.com/
、これはyourorg.crm
が異なります。 - PowerShell スクリプト言語の基本的な解釈
このサンプルを実行する方法
PowerApps-サンプル リポジトリをクローンまたはダウンロードします。
Visual Studio Code を使用して
/dataverse/webapi/PS/MetadataOperations/MetadataOperationsSample.ps1
ファイルを開くこの行を編集して、接続したい環境の URL を使用します。
Connect 'https://yourorg.crm.dynamics.com/' # change this
(オプション) このサンプルが作成するレコードを削除したくない場合は、
$deleteCreatedRecords
変数を$false
に設定します。F5 を押してサンプルを実行します。
サンプルを初めて実行すると、ブラウザ ウィンドウが開きます。 ブラウザ ウィンドウで、認証に使用する資格情報を入力または選択します。
別のユーザーとして接続するには、Disconnect-AzAccount コマンド を実行して、再試行してください。
コード
このサンプルのコードは、次から入手できます。PowerApps-Samples/dataverse/webapi/PS/MetadataOperations/MetadataOperationsSample.ps1
実際の動作
このサンプルには 11 つのリージョンがあります:
セクション 0: 発行者とソリューションを作成
操作:ソリューション レコードと関連する発行者レコードを作成します。
注意
このサンプルで作成されたすべてのソリューション コンポーネントは、エクスポートできるようにソリューションに関連付けられます。 名前付きメッセージのない操作の場合、この関連付けは、値として設定されたソリューションの一意の名前を設定する MSCRM.SolutionUniqueName
要求ヘッダーを使用して作成されます。
ソリューション コンポーネントのすべての名前には、発行者のカスタマイズの接頭辞を使用して接頭辞が付けられます。
セクション 1: テーブルの作成、取得、更新
操作:
POST
要求を/EntityDefinitions
に送信して、新しいsample_BankAccount
ユーザー所有テーブルを作成します。GET
要求を/EntityDefinitions(LogicalName='sample_bankaccount')
に送信して、作成されたテーブルを取得します。PUT
要求を/EntityDefinitions(LogicalName='sample_bankaccount')
に送信して、テーブルを更新します。
セクション 2: 列の作成、取得、更新
操作:
GET
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')
に送信して、sample_boolean
ブール値の列を取得しようとします。- 列がまだ存在しない場合は、
POST
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes
に送信して、sample_BankAccount
テーブル用に新しいsample_boolean
ブール値の列を作成します。 PUT
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')
に送信して、sample_boolean
ブール型の列を更新します。- UpdateOptionValue アクション を使用して、
sample_boolean
ブール列の値のオプション ラベルを更新します。 sample_BankAccount
テーブルのsample_datetime
datetime 列を取得して、存在しない場合は作成します。sample_BankAccount
テーブルのsample_decimal
小数列を取得して、存在しない場合は作成します。sample_BankAccount
テーブルのsample_integer
整数列を取得して、存在しない場合は作成します。sample_BankAccount
テーブルのsample_memo
メモ列を取得して、存在しない場合は作成します。sample_BankAccount
テーブルのsample_money
金額列を取得して、存在しない場合は作成します。sample_BankAccount
テーブルのsample_choice
選択列を取得して、存在しない場合は作成します。- InsertOptionValue アクションを使用して、
sample_choice
列に新しいオプションを追加します。 - OrderOption アクションを使用して、
sample_choice
列のオプションの順序を変更します。 - DeleteOptionValue アクションを使用して、
sample_choice
列のオプションの一つを削除します。 sample_BankAccount
テーブルのsample_multiselectchoice
複数選択列を取得して、存在しない場合は作成します。- InsertStatusValue アクションを使用して、
sample_BankAccount
テーブルに新しいステータス オプションを作成します。
セクション 3: グローバル OptionSet の作成および使用
操作:
POST
要求を/GlobalOptionSetDefinitions
に送信して、新しいグローバル選択肢の名前付きsample_colors
を作成します。GET
要求を/GlobalOptionSetDefinitions(<id value>)
に送信して、sample_colors
グローバル選択肢を取得します。POST
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes
に送信し、グローバル選択肢に関連付けることによって、sample_colors
グローバル選択肢を使用してsample_BankAccount
テーブルの新しいsample_colors
選択肢列を作成します。
セクション 4: 顧客リレーションシップの作成
操作:
- CreateCustomerRelationships アクションを使用して、
sample_BankAccount
テーブルに新しいsample_customerid
顧客列を作成します。 GET
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_customerid')
に送信して、sample_customerid
顧客列を取得します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata
.` に送信して、顧客列に作成されたリレーションシップを取得します。
セクション 5: 一対多の関連付けの作成と取得
操作:
- CanBeReferenced 関数を使用して、
sample_BankAccount
テーブルが 1:N の関連付けで参照できるかどうかを確認します。 - CanBeReferencing 関数を使用して、
contact
テーブルが 1:N の関連付けで他のテーブルを参照できるかどうかを確認します。 - GetValidReferencingEntities 関数を使用して、他のどのテーブルが、1:N の関連付けで
sample_BankAccount
テーブルを参照できるかを確認します。 POST
要求を/RelationshipDefinitions
に送信して、sample_BankAccount
とcontact
のテーブル間に 1:N の関連付けを作成します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata
に送信して、1:N の関連付けを取得します。
セクション 6: 多対一の関連付けの作成と取得
操作:
POST
要求を/RelationshipDefinitions
に送信して、sample_BankAccount
とaccount
のテーブル間に N:1 の関連付けを作成します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata
に送信して、N:1 の関連付けを取得します。
セクション 7: 多対多の関連付けの作成と取得
操作:
- CanManyToMany 関数を使用して、
sample_BankAccount
テーブルとcontact
テーブルが、N:N の関連付けに参加できるかどうかを確認します。 - GetValidManyToMany 関数を使用して、
sample_BankAccount
テーブルとcontact
テーブルが、N:N の関連付けに参加できるかどうかを確認します。 POST
要求を/RelationshipDefinitions
に送信して、sample_BankAccount
とcontact
のテーブル間に N:N の関連付けを作成します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata
に送信して、N:N の関連付けを取得します。
セクション 8: 管理ソリューションのエクスポート
操作: セクション0: 発行元とソリューションの作成 で作成したソリューションを、ExportSolutionアクションを使用して、このサンプルで作成した項目を含めてエクスポートします。
セクション 9: サンプル レコードを削除
操作: このサンプルで作成された各レコードへの参照は、作成時にリストに追加されました。 このサンプルでは、レコードは作成された順序と逆の順序で削除されます。
セクション10: 管理ソリューションのインポートと削除
操作:
- ImportSolution アクションを使用して、セクション 8 でエクスポートしたソリューションをインポートします。
- ソリューション テーブルをクエリして、インポートされたソリューションの
solutionid
を取得します。 solutionid
を使用して、インポートされたソリューションを削除します。
クリーンアップ
デフォルトでは、このサンプルで作成されたすべてのレコードが削除されます。 サンプルが完了した後に作成されたレコードを表示する場合は、deleteCreatedRecords
変数を false
に変更すると、レコードを削除するかどうかを確認するメッセージが表示されます。
参照
Dataverse Web API を使用する
テーブル定義による Web API の利用
Web API のサンプル
Web API 基本操作のサンプル (PowerShell)
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。