add-dataverse について
Power Apps プロジェクトに Microsoft Dataverse のテーブルを追加するスキルです。スキーマ計画、安全なテーブル作成、データソース追加、生成された TypeScript サービスの確認、ビルド検証を案内します。
主な機能
- 01スキーマと依存関係の計画
- 02既存テーブルの確認
- 03テーブルと列の安全な作成
- 04TypeScript モデルとサービスの生成
- 05ビルドと変更内容の記録
活用シーン
- 01既存の Dataverse テーブルへのアプリ接続
- 02新機能向けの関連テーブル作成
- 03Dataverse データ用 CRUD サービスの生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ power-platform-skills --skill add-dataverseインストール後、Claude Code で/add-dataverseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-authentication-reference.mddata-architecture-reference.mddataverse-reference.mdtable-management-reference.md詳細
📋 共有手順: shared-instructions.md - 複数の項目に関わる内容です。
参考資料:
- dataverse-reference.md - 選択肢フィールド、仮想フィールド、ルックアップ、ファイル/画像列、フォームのパターン(重要)
- api-authentication-reference.md - Dataverse API の認証、トークン、パブリッシャーのプレフィックス
- table-management-reference.md - テーブルと列のクエリ、作成、拡張
- data-architecture-reference.md - リレーションシップの種類、依存関係の階層
Dataverse の追加
2 つの方法があります。既存のテーブル(Step 5 に進みます)または新しいテーブル(全ワークフローを実行します)。
ワークフロー
- 計画 → 2. API 認証の設定 → 3. 既存のテーブルを確認 → 4. テーブルを作成 → 5. データソースを追加 → 6. 生成されたファイルを確認 → 7. ビルド
Step 1: 計画
メモリバンクでプロジェクトのコンテキストを確認します。ユーザーに次のことを尋ねます。
- どの Dataverse テーブルが必要ですか?(例:
account、contact、cr123_customentity) - そのテーブルは環境内にすでに存在しますか?それとも新しく作成する必要がありますか?
テーブルがすでに存在する場合: Step 5 に進みます。
新しいテーブルを作成する場合:
- 必要なデータについて尋ね、適切なスキーマを設計します
- 適切な場合は標準の Dataverse テーブルを使用します(人物には
contact、組織にはaccount) - 依存関係グラフを作成します。階層の分類については、data-architecture-reference.md を参照してください
EnterPlanModeで計画モードに入り、テーブル、列、リレーションシップ、作成順序を含む ER モデルを提示しますExitPlanModeで承認を得ます
Step 2: API 認証の設定(テーブルを作成する場合)
詳細については、api-authentication-reference.md を参照してください。
az account show # Verify Azure CLI logged in
# Find your Dataverse environment URL:
# In make.powerapps.com → Settings → Developer resources → Web API endpoint
# It looks like: https://<org-name>.crm.dynamics.com/api/data/v9.2/
# Use the base URL: https://<org-name>.crm.dynamics.com
$api = Initialize-DataverseApi -EnvironmentUrl "https://<org>.crm.dynamics.com"
$headers = $api.Headers
$baseUrl = $api.BaseUrl
$publisherPrefix = $api.PublisherPrefix
システム管理者またはシステムカスタマイザーのセキュリティロールが必要です。
Step 3: 既存のテーブルを確認(テーブルを作成する場合)
作成する前に、必ず既存のテーブルをクエリしてください。
$existingTables = Invoke-RestMethod -Uri "$baseUrl/EntityDefinitions?`$filter=IsCustomEntity eq true&`$select=SchemaName,LogicalName,DisplayName" -Headers $headers
Find-SimilarTables、Compare-TableSchemas、Build-TableNameMapping 関数については、table-management-reference.md を参照してください。
AskUserQuestion で調査結果をユーザーに提示します。
- 再利用できるテーブル(一致する列を持つテーブルがすでに存在する)
- 拡張が必要なテーブル(存在するが、一部の列が不足している)
- 作成が必要なテーブル(一致するものが見つからない)
Step 4: テーブルを作成(テーブルを作成する場合)
作成前に明示的な確認を得ます。依存関係の順に作成します。
- Tier 0:参照テーブル(依存関係なし)
- Tier 1:主エンティティ(Tier 0 を参照)
- Tier 2:従属テーブル(Tier 1 を参照)
table-management-reference.md の安全な関数を使用します。
New-DataverseTableIfNotExistsAdd-DataverseColumnIfNotExistsAdd-DataverseLookupIfNotExists(data-architecture-reference.md)
Step 5: データソースを追加
各テーブルについて、次を実行します。
pa app add data-source --connector dataverse --table <table-logical-name>
テーブルごとにコマンドを実行すれば、複数のテーブルを追加できます。
ステップ 6:生成されたファイルを確認する
このコマンドで次のファイルが生成されます。
src/generated/models/{Table}Model.ts-- TypeScript インターフェース。テーブルにファイル列/画像列がある場合は、{Table}FileColumnName、{Table}ImageColumnName、{Table}UploadColumnNameの共用体型も生成されますsrc/generated/services/{Table}Service.ts-- CRUD メソッド(create、get、getAll、update、delete)。ファイル列/画像列がある場合は、upload、downloadFile、downloadImage、deleteFileOrImageも生成されます
ユーザーに使用例を提示してください。
import { AccountsService } from "../generated/services/AccountsService";
const result = await AccountsService.getAll({
select: ["name", "accountnumber"],
filter: "statecode eq 0",
orderBy: ["name asc"],
top: 50
});
const accounts = result.data || [];
重要なルール:
- fetch/axios ではなく、生成されたサービス(例:
AccountsService.getAll())を使用してください - 実際のデータを取得するには、
result.dataを確認してください - 必要な場合を除き、生成されたファイルは編集しないでください
- Dataverse のコードを書く前に、dataverse-reference.md を読んでください -- 選択肢フィールド、仮想フィールド、ルックアップ、ファイル列/画像列には、いずれも重要な注意点があります
ステップ 7:ビルドする
npm run build
続行する前に TypeScript のエラーを修正してください。まだデプロイしないでください。
メモリーバンクを更新する
追加(または作成)したテーブル、生成されたファイル、スキーマに関する注意事項を記録してください。