次の方法で共有


Power Platform でカタログに関するデータを取得する

テナントのカタログに関するデータを取得するには、カタログがインストールされている環境を特定する必要があります。 次に、この情報を提供するように設計されたテーブルまたは API を照会することにより、その環境からカタログに関するデータを取得できます。

ほとんどのテナントではカタログは 1 つだけインストールされますが、テナント内の複数の環境にカタログをインストールすることもできます。

テナント内でカタログのある環境を見つける

pac admin list コマンドを使用して、テナント内のカタログを含む環境を表示します。

注意

このコマンドには、管理者の認証プロファイルが必要です。

このコマンドを使用する場合、次の --application パラメータを値 83a35943-cb41-4266-b7d2-81d60f383695 で使用する必要があります。 この値は、カタログに関連付けられたアプリケーション ID です。

PS C:\Users\you> pac admin list --application 83a35943-cb41-4266-b7d2-81d60f383695
Connected as you@yourorg.onmicrosoft.com

Listing all environments from your tenant...
Active Environment Environment ID                       Environment Url                   Type       Organization ID
*      Your Org    b16bdb7a-e023-4158-a839-4f8831ed2432 https://yourorg.crm.dynamics.com/ Production e20be4c1-02ce-4e81-93c6-6e95ff053943

カタログ テーブル

テナント内の環境に Power Platform カタログ マネージャー アプリケーションをインストールすると、Power Platform テーブル/エンティティ参照内のカタログ にリストされているテーブルがその環境のみに追加されます。

次の表に、使用する可能性のある最も重要なテーブルの一部を示します。

テーブル プロパティ
承認要求 (mspcat_certificationrequest) カタログ システムへの新規または更新済みの送信を処理する際に使用する、承認レコードを含みます。
カタログ発行元 (mspcat_publisher) TPS パブリッシャ データを保持するためのパブリッシャ エンティティ。
カタログ アイテム (mspcat_applications) カタログに表示されるエントリ
パッケージ (mspcat_packages) カタログ品目の展開資産。
インストール履歴 (mspcat_InstallHistory) インストールとその状態のレコードを含みます
インストール アクティビティ (mspcat_InstallActivity) インストール履歴アクティビティ ID

カタログ情報の表示

カタログに関する情報を取得するために使用できる Dataverse メッセージは 2 つあります。

  • mspcat_GetPowerCatalogInformation このメッセージは高速で、カタログの最小限の許可と記述データを提供することを意図しています。
  • mspcat_GetPowerCatalogDetails このメッセージの内容を使用して、送信ドキュメントを入力し、このカタログでカタログ アイテムと発行元を参照するためのラベルを設定します。

mspcat_GetPowerCatalogInformation

mspcat_GetPowerCatalogInformation のメッセージは permissionsonly ブール値のパラメーターを 1 つ持ち、mspcat_GetPowerCatalogInformationResponse の複合型で定義された以下の情報を返します:

件名 タイプ プロパティ
SolutionVersion 文字列 インストールされたカタログ ソリューションのバージョン
CatalogDescription 文字列 このカタログの目的を説明します
CanRead ブール値 ユーザーによるカタログ項目の読み取りの可否
CatalogName 文字列 この環境にインストールされているカタログの名前
ImageLink 文字列 設定する場合は、カタログの画像を選択します
CanSubmit ブール値 ユーザーによるカタログへの項目の送信の可否

ブール値のパラメーター permissionsonly がtrueの場合、CatalogDescriptionCatalogNameImageLink の値は返されません。 常に SolutionVersionCanReadCanSubmit の値が返されます。

次の GetPowerCatalogInformationExample 静的メソッドは、mspcat_GetPowerCatalogInformationRequest コマンドによって mspcat_GetPowerCatalogInformationResponse メッセージ用に生成された mspcat_GetPowerCatalogInformation および クラスを使用してデータを取得します。

/// <summary>
/// Returns data about the catalog for an environment
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
/// <param name="permissionsonly">Whether to only return information about permissions.</param>
static void GetPowerCatalogInformationExample(IOrganizationService service, bool permissionsonly = false)
{
   var request = new mspcat_GetPowerCatalogInformationRequest();
   if (permissionsonly) {
         request.permissionsonly = true;
   }
   var response = (mspcat_GetPowerCatalogInformationResponse)service.Execute(request);

   Console.WriteLine($"SolutionVersion: {response.SolutionVersion}");
   Console.WriteLine($"CatalogDescription: {response.CatalogDescription}");
   Console.WriteLine($"CanRead: {response.CanRead}");
   Console.WriteLine($"CatalogName: {response.CatalogName}");
   Console.WriteLine($"ImageLink: {response.ImageLink}");
   Console.WriteLine($"CanSubmit: {response.CanSubmit}");
}

Output

permissionsonly は偽に等しい。

SolutionVersion: 1.1.24.500
CatalogDescription: Catalog in Power Platform applications created by your company.
CanRead: True
CatalogName: Default Catalog Name
ImageLink:
CanSubmit: True

.NET 用 SDK の事前バインド クラスを生成する
.NET 用 Dataverse SDK を使用する

mspcat_GetPowerCatalogDetails

mspcat_GetPowerCatalogDetails によって返された情報を使用して、送信ドキュメントを入力し、このカタログでカタログ アイテムと発行元を参照するためのラベルを設定します。

この関数は、エンコードされた文字列を含む単一の CatalogDetails 文字列プロパティを持つオブジェクトを返します。 デコードされると、文字列には次のプロパティを持つ JSON データが含まれます。

件名 タイプ プロパティ
catalogId 文字列 カタログの一意 ID
isSuccess 文字列 内部でのみ使用します。
sourceOptions オプション配列 mspcat_certificationrequest_requestsource グローバル選択からのオプション。
categoryOptions オプション配列 mspcat_catalogbusinesscategory グローバル選択からのオプション。
publisherLocalizedDisplayName 文字列 カタログ発行元のローカライズされた名前。
catalogItemLocalizedDisplayName 文字列 カタログ アイテムを参照するために使用されるローカライズされた名前。

次の GetPowerCatalogDetailsExample 静的メソッドは、mspcat_GetPowerCatalogDetailsRequest コマンドによって mspcat_GetPowerCatalogDetailsResponse メッセージ用に生成された mspcat_GetPowerCatalogDetails および クラスを使用してデータを取得します。

/// <summary>
/// Outputs details of the catalog in Power Platform.
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void GetPowerCatalogDetailsExample(IOrganizationService service) {

    var request = new mspcat_GetPowerCatalogDetailsRequest();
    var response = (mspcat_GetPowerCatalogDetailsResponse)service.Execute(request);

   JsonDocument catalogDetails = JsonDocument.Parse(response.CatalogDetails);

    string catalogId = catalogDetails.RootElement.GetProperty("catalogId").GetString();
    bool isSuccess = catalogDetails.RootElement.GetProperty("isSuccess").GetBoolean();
    JsonElement sourceOptions = catalogDetails.RootElement.GetProperty("sourceOptions");
    JsonElement categoryOptions = catalogDetails.RootElement.GetProperty("categoryOptions");
    string publisherLocalizedDisplayName = catalogDetails.RootElement.GetProperty("publisherLocalizedDisplayName").GetString();
    string catalogItemLocalizedDisplayName = catalogDetails.RootElement.GetProperty("catalogItemLocalizedDisplayName").GetString();


    Console.WriteLine($"catalogId: {catalogId}");
    Console.WriteLine($"isSuccess: {isSuccess}");
    Console.WriteLine("sourceOptions:");
    foreach (JsonElement element in sourceOptions.EnumerateArray())
    {
        int id = element.GetProperty("id").GetInt32();
        string label = element.GetProperty("userLocalziedLabel").GetString();
        Console.WriteLine($"  {id} {label}");
    }
    Console.WriteLine("categoryOptions:");
    foreach (JsonElement element in categoryOptions.EnumerateArray())
    {
        int id = element.GetProperty("id").GetInt32();
        string label = element.GetProperty("userLocalziedLabel").GetString();
        Console.WriteLine($"  {id} {label}");
    }
    Console.WriteLine($"publisherLocalizedDisplayName: {publisherLocalizedDisplayName}");
    Console.WriteLine($"catalogItemLocalizedDisplayName: {catalogItemLocalizedDisplayName}");
}

Output

静的な GetPowerCatalogDetailsExample メソッドは、コンソールに次のように書き込みます:

catalogId: 883278f5-07af-45eb-a0bc-3fea67caa544
isSuccess: True
sourceOptions:
  526430000 Other
  526430001 Power Automate Maker Portal
  526430002 Power Platform Maker Portal
  526430003 Power Virtual Agents Maker Portal
  526430004 Power Platform Admin API
  526430005 PAC CLI
  526430006 PAC Build Task
  526430007 Pipelines in Power Platform
categoryOptions:
  526430000 Customer Service
  526430001 Project Management
  526430002 Calendar Management & Scheduling
  526430003 Email Management
  526430004 Files & Documentation
  526430005 Notification & Reminders
  526430006 Analytics
  526430007 Collaboration
  526430008 Commerce
  526430009 Finance
  526430010 Compliance & Legal
  526430011 Sales
  526430012 IT Tools
  526430013 Marketing
  526430014 Operations & Supply Chain
  526430015 Internet of Things
  526430016 AI Machine Learning
  526430017 Geolocation
  526430018 Human Resources
publisherLocalizedDisplayName: Catalog Publisher
catalogItemLocalizedDisplayName: Catalog Item

.NET 用 SDK の事前バインド クラスを生成する
.NET 用 Dataverse SDK を使用する

カタログでアイテムを表示する

PAC CLI を使用するか、カタログ品目 (mspcat_applications) テーブルにクエリを実行することで、カタログの品目を検出できます。

PAC CLI の使用

カタログ内のアイテムを表示するには、pac category list コマンドを使用します。

pac catalog list 
Connected to... TestCatalog
Connected as user@domain
Listing all published catalog items from the current Dataverse Organization...
Catalog Item Name                   Publisher Name            Catalog Item Id                      Revision Id                          Version Status
Contoso Conference Custom Connector Catalog Conferences Team  ContosoConferencesCustomConnector    4e882dd6-74f3-ed11-8849-000d3a0a286b 1.0.0.1 Published
Contoso Themed Components           ContosoPublisher          ContosoThemedComponents              efbc469d-f1b2-ed11-83fd-000d3a0a2d9d 1.0.0.1 Published

また、これらのパラメーターを使用して、返されたレコードをフィルターすることもできます。

パラメータ エイリアス プロパティ
--catalog-item-id -cid 検索するカタログ品目 ID。 カタログ アイテム ID を使用する場合、--catalog-item-name パラメーター 値はすべて無視されます。
--catalog-item-name -n 検索する Catalog 品目名です。
--include-active -ia アクティブな品目を含めます。

--json パラメータを使用して JSON データを返すようにします。

--environment (-env) パラメーター を使用して、別の環境のカタログを照会します。

Dataverse テーブルをクエリする

カタログ品目に関する情報はカタログ品目 (mspcat_applications) テーブルにあるため、他の Dataverse テーブルと同様にそこからデータを取得できます。

次の静的 RetrieveCatalogItems 算出方法は、カタログ アイテム (mspcat_applications)パッケージ (mspcat_packages) テーブルからカタログ内のアイテムに関するデータ テーブルを取得して出力します。 この関数は、コンソール アプリケーションでテーブルをレンダリングするために ConsoleTables NuGet パッケージに依存しています。

/// <summary>
/// Retrieves information about catalog items and writes it to the console
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void RetrieveCatalogItems(IOrganizationService service)
{
    QueryExpression query = new("mspcat_applications")
    {
        ColumnSet = new ColumnSet(
             "mspcat_tpsid",
             "mspcat_deploytype",
             "mspcat_applicationtype",
             "mspcat_businesscategory",
             "mspcat_description",
             "mspcat_applicationsid",
             "mspcat_publisherid",
             "mspcat_name",
             "statuscode"),
        Criteria = new FilterExpression(LogicalOperator.And)
        {
            Conditions = {
                {
                    new ConditionExpression(
                        attributeName: "statecode",
                        conditionOperator: ConditionOperator.Equal,
                        value: 0)
                }
            }
        }
    };

    LinkEntity linkToPackages = query.AddLink(
       linkToEntityName: "mspcat_packages",
       linkFromAttributeName: "mspcat_packageasset",
       linkToAttributeName: "mspcat_packagesid",
       joinOperator: JoinOperator.Inner);

    linkToPackages.Columns = new ColumnSet(
        "statecode",
        "mspcat_uniquename",
        "mspcat_version",
        "statuscode");

    linkToPackages.EntityAlias = "pkg";

    EntityCollection catalogs = service.RetrieveMultiple(query);

    var table = new ConsoleTables.ConsoleTable(
        "Catalog Item Name",
        "Publisher Name",
        "Catalog Item ID",
        "Revision ID",
        "Version",
        "Status");

    foreach (Entity catalog in catalogs.Entities)
    {
        string catalogItemName = catalog.GetAttributeValue<string>("mspcat_name");
        string publisherName = catalog.FormattedValues["mspcat_publisherid"];
        string catalogItemId = catalog.GetAttributeValue<string>("mspcat_tpsid");
        Guid revisionId = catalog.GetAttributeValue<Guid>("mspcat_applicationsid");
        string version = (string)catalog.GetAttributeValue<AliasedValue>("pkg.mspcat_version").Value;
        string status = catalog.FormattedValues["statuscode"];

        string[] rowData = {
            catalogItemName,
            publisherName,
            catalogItemId,
            revisionId.ToString(),
            version,
            status
        };

        table.Rows.Add(rowData);
    }
    table.Write();
}

この例の出力は次のようになります。

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 | Catalog Item Name                  | Publisher Name          | Catalog Item ID                   | Revision ID                          | Version | Status    |
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 | Contoso Conference Custom Connector| Catalog Conferences Team| ContosoConferencesCustomConnector | 4e882dd6-74f3-ed11-8849-000d3a0a286b | 1.0.0.1 | Published |
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 | Contoso Themed Components          | ContosoPublisher        | ContosoThemedComponents           | efbc469d-f1b2-ed11-83fd-000d3a0a2d9d | 1.0.0.1 | Published |
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------

.NET 用 Dataverse SDK を使用する
QueryExpression を使用したデータのクエリ

次の手順