购物广告系列

购物广告系列这种广告系列类型让用户在点击您的广告之前即可获得详细的产品信息,有助于推广您的产品。购物广告系列中的广告向用户展示您的产品的照片以及名称、价格、商店名称以及其他信息。

本指南介绍如何在 AdWords API 中设置和管理购物广告系列。

将您的 Google Merchant Center 帐号与 AdWords 帐号相关联

制作购物广告系列之前,您需要先将 AdWords 帐号与 Google Merchant Center 帐号关联,这就涉及到以下两个步骤:

  1. 从 Merchant Center 帐号向您的 AdWords 帐号发送邀请。
  2. 在您的 AdWords 帐号中接受邀请。

从您的 Merchant Center 帐号发送邀请

您可以使用 Merchant Center 界面发送此邀请,或使用 Content API for Shopping 更新帐号adwordsLinks

在 AdWords 帐号中管理邀请

从 v201609 开始,您可以使用 getServiceLinksmutateServiceLinks(属于 CustomerService)获取、接受和拒绝 AdWords 帐号与包括 Merchant Center 在内的其他服务之间的关联。

要提取您的帐号的所有关联,只需调用 getServiceLinks,且带有谓词 serviceType = MERCHANT_CENTER 即可,如下所示:

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create a selector that filters by service type.
Selector selector =
    new SelectorBuilder()
        .fields("ServiceType")
        .equals("ServiceType", ServiceType.MERCHANT_CENTER.getValue())
        .build();

// Get the service links.
ServiceLink[] serviceLinks = customerService.getServiceLinks(selector);

// Display the results.
if (serviceLinks != null) {
  for (ServiceLink serviceLink : serviceLinks) {
    System.out.printf(
        "Found service link with service link ID %d, type %s, name '%s', and status %s.%n",
        serviceLink.getServiceLinkId(),
        serviceLink.getServiceType(),
        serviceLink.getName(),
        serviceLink.getLinkStatus());
  }
} else {
  System.out.println("No service links found.");
}

要接受邀请,请调用 mutateServiceLinks 并传递将 linkStatusPENDING 更改为 ACTIVESET 操作。确保在操作数上设置 serviceTypeserviceLinkId

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create the operation to set the status to ACTIVE.
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.SET);
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(serviceLinkId);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
serviceLink.setLinkStatus(ServiceLinkLinkStatus.ACTIVE);
op.setOperand(serviceLink);

// Update the service link.
ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});

// Display the results.
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d, type '%s' updated to status: %s.%n",
      mutatedServiceLink.getServiceLinkId(),
      mutatedServiceLink.getServiceType(),
      mutatedServiceLink.getLinkStatus());
}

要拒绝邀请,请调用 mutateServiceLinks 并传递 REMOVE 操作,其中包含设置了 serviceTypeserviceLinkId 的操作数。

Java

// Get the CustomerService.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Create the operation to remove the service link.
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.REMOVE);
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(serviceLinkId);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
op.setOperand(serviceLink);

// Remove the service link.
ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});

// Display the results.
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d and type '%s' was removed.%n",
      mutatedServiceLink.getServiceLinkId(), mutatedServiceLink.getServiceType());
}

制作购物广告系列

注意:本指南使用 CampaignServiceAdGroupCriterionService 以方便说明,但您可以使用 BatchJobService 执行相同的操作。有关详细信息,请参阅批处理作业指南

制作购物广告系列时,您需要设定预算、出价以及相关设置。最简单的购物广告系列类型对所有产品使用相同的出价。

要设置购物广告系列,您还需要执行两个特殊步骤:

  1. 将广告系列的 advertisingChannelType 设置为 SHOPPING

  2. 创建 ShoppingSetting 并将其添加到广告系列。

这两个步骤都显示在下面的代码中。

Campaign campaign = new Campaign();
campaign.setAdvertisingChannelType(AdvertisingChannelType.SHOPPING);
// Recommendation: Set the campaign to PAUSED when creating it to stop
// the ads from immediately serving. Set to ENABLED once you've added
// targeting and the ads are ready to serve.
campaign.setStatus(CampaignStatus.PAUSED);

ShoppingSetting shoppingSetting = new ShoppingSetting();
shoppingSetting.setMerchantId(MERCHANT_ID);
shoppingSetting.setSalesCountry("GB");
shoppingSetting.setCampaignPriority(0);
shoppingSetting.setEnableLocal(true);
campaign.setSettings(new Setting[] {shoppingSetting});

如上面的示例所示,ShoppingSetting 具有以下属性:

merchantId(必需)
您的产品所属的 Merchant Center 帐号 ID。
salesCountry(必需)
只有销售国家/地区与 Merchant Center 中的目标国家/地区一致的产品才会被选中。请注意,这并不会影响广告定位。
campaignPriority(可选,默认值:0
可以选择 012。如果不止一个广告系列使用相同的 Merchant Center 数据 Feed,此属性可决定应优先考虑哪个广告系列。优先级较高的广告系列将会被选中。如果两个广告系列具有相同的优先级,则所有广告都将包含在为产品所设出价最高的广告系列中。
enableLocal(可选,默认值:false
如果设置为 true,此标记会在您的购物广告系列中启用本地产品目录广告。

制作购物广告组和广告

要为您的购物广告系列投放广告,您必须创建 AdGroup,且在广告组中至少包含一个广告。

购物广告系列支持两种类型的广告组:

  • SHOPPING_PRODUCT_ADS:这是购物广告系列的默认广告组类型,用于投放标准产品广告。
  • SHOPPING_SHOWCASE_ADS:此广告组类型仅限于在购物结果中投放橱窗广告。要制作广告,您需要:
    1. 将广告组的 adGroupType 字段设置为 SHOPPING_SHOWCASE_ADS
    2. 将广告组 biddingStrategyConfigurationbiddingStrategyType 设置为 MANUAL_CPCENHANCED_CPC

制作所需类型的广告组后,请在广告组中添加 ProductAdShowcaseAd,以完成广告系列的基本设置。

接下来,您需要确定要包含哪些产品以及为这些产品设置的出价金额。

产品划分

购物广告系列的强大优势在于,它可以按照多个维度对您的产品目录进行细分,并分别处理各个产品组。观察下面的图表,其中的产品被大致分为“电子产品”(按品牌进一步划分)、“玩具”和“其他”(按使用状态进一步划分)

您可以创建一个树状结构。该树状结构的每一级代表一项划分。

树状结构中的每个节点都是细分或单元。每个细分都会在树状结构中延伸出一个新的级别,而单元则是树状结构中的树叶。各个细分必须始终完全分割开来,因此必须包含一个代表其他的单元类型。在示例中,root、Category: ElectronicsCategory: (Other) 节点就是细分。

节点是 ProductPartition 类(Criterion 类的一个子类)的对象。ProductPartition 通过 BiddableAdGroupCriterionNegativeAdGroupCriterionAdGroup 相关联。

ProductPartition 类型和 AdGroupCriterion 类型组合在一起会产生以下结果:

ProductPartition 类型 AdGroupCriterion类型 效果
单元 BiddableAdGroupCriterion 与树状结构的这片树叶相匹配的产品的出价。
单元 NegativeAdGroupCriterion 此组合表示您不希望对此广告组中的这片树叶出价,但其他广告组和(优先级较低的)广告系列可以执行此操作。

其他组合会导致错误。

ProductPartition 也有一个 caseValue,可以是 ProductDimension 类型的多个子类中的任意一个。ProductDimension 表示与您的产品相关联的值,例如品牌、类别或条件。有关可用的 ProductDimension 类型的完整说明,请参阅参考文档

细分的每个直属子级都必须具有属于相同 ProductDimension 子类型的 caseValue。只有根节点没有 caseValue

ProductPartition root = new ProductPartition();
root.setPartitionType(ProductPartitionType.SUBDIVISION);
root.setId(-1);

ProductPartition node1 = new ProductPartition();
node1.setPartitionType(ProductPartitionType.UNIT);
node1.setCaseValue(new ProductBrand(null, "Brand A"));
node1.setParentCriterionId(root.getId());

另请注意,每个细分必须包含一个正确类型的“空”caseValue,表示“所有其他值”。

ProductPartition node2 = new ProductPartition();
node2.setPartitionType(ProductPartitionType.UNIT);
node2.setCaseValue(new ProductBrand());
node2.setParentCriterionId(root.getId());

临时 ID

在服务器处理创建条件的 mutate 请求之前,系统不会向这些条件分配 ID。不过,在处理过程完成之前,ProductPartition 是无效的,因此每当您创建细分时,都必须使用相同的操作至少创建一个子级细分。

为了使您能够为子节点设置 parentCriterionId,您可以使用临时条件 ID。这些是仅应用于单个 mutate 请求的上下文中的本地唯一(而不是全局唯一)标识符。任何负整数都可以用作临时 ID。在上面的示例代码中,根 ProductPartition 的 ID 设置为 -1

处理请求时,每个 Criterion 都会照常分配一个正整数的全局 ID。

产品维度

购物广告系列有以下 ProductDimension 类型:

ProductBiddingCategoryProductCustomAttributeProductType 进一步分为多个子类型。当按照上面的其中一种类型进行细分时,该细分的每个 caseValue 也必须属于相同的子类型。

ProductBiddingCategoryProductType 具有层级结构,而子类型代表层级结构中的深度。媒体类别是 BIDDING_CATEGORY_L1,而图书类别是 BIDDING_CATEGORY_L2,且媒体类别是其父级。您不能按照 caseValue 进行细分,除非父级已在树状结构中进一步细分。

例如,图书类别不能作为根下面的直属节点,图书类别也不能作为电子产品类别下面的直属节点,因为电子产品不是图书的父级。

ProductCustomAttribute 没有层级结构。相应的,子类型 CUSTOM_ATTRIBUTE_0CUSTOM_ATTRIBUTE_4 会映射到 Merchant Center 中的值自定义属性 0自定义属性 4

您可以通过产品维度 ProductChannelProductChannelExclusivity 指定本地、在线或同时使用这两个渠道。

出价类别

ProductBiddingCategory 类型的值是固定 ID。您可以通过 ConstantDataService 方法的 getProductBiddingCategoryData 操作提取全部出价类别。强烈建议您缓存此次调用的结果,因为此数据集非常大且更新频率比较低。

修改现有的 ProductPartition 树状结构

树状结构必须始终保持完整,因此,导致树状结构无效的任何 mutate 操作与对其进行修复的操作必须属于同一个请求。要使树状结构有效,细分的所有子节点的 caseValue 必须具有相同的类型,并且每个细分都必须包含一个“其他”节点。

如果您想进一步细分树叶节点,则必须移除现有的单元,并将其替换为具有相同 caseValue 的细分。然后,您可以将自己的细分添加为新节点的子级。

移除某个细分后,其所有子级也会被递归移除。

按产品维度过滤

您可以添加 ProductScope 条件来过滤广告系列中的产品。您最多可以为每个广告系列创建一个 ProductScopeProductScope 是一个或多个 ProductDimension 的容器,而后者代表用于产品的一个方面的简单过滤器。例如,如果您添加 ProductDimensionProductBrand 子类型,并将其值设置为 Nexus,那么该广告系列将仅应用于在 Merchant Center 中将品牌设置为“Nexus”的产品。

ProductScope productScope = new ProductScope();
productScope.setDimensions(new ProductDimension[] {new ProductBrand(null, "Nexus")});

您最多可以向 ProductScope 添加七个 ProductDimension。只有与所有指定的 ProductDimension 相匹配的产品才能包含在广告系列中。

出价限制

对购物广告组的出价限制取决于其类型是 SHOPPING_PRODUCT_ADS 还是 SHOPPING_SHOWCASE_ADS。下表总结了其中的差别。

  SHOPPING_PRODUCT_ADS SHOPPING_SHOWCASE_ADS
出价策略 仅支持以下类型:
  • MANUAL_CPC
  • ENHANCED_CPC
  • TARGET_ROAS
  • TARGET_SPEND
仅支持以下类型:
  • MANUAL_CPC
  • ENHANCED_CPC
广告组级出价策略 可选 必选
在产品划分节点级别出价 必选 不允许

报告

购物广告系列推出两种新的报告:产品划分报告购物效果报告

如需了解详情,请参阅报告指南

发送以下问题的反馈:

此网页
AdWords API
AdWords API
需要帮助?请访问我们的支持页面