更改对象

如 API 结构指南中所述,Google Ads API 中的每个顶级资源都有一个对应的资源类型专用服务,该服务支持修改资源的实例。您还可以使用 GoogleAdsService.Mutate 在单个请求中以原子方式更改多种资源类型。

本指南使用 CampaignService 演示如何修改 Campaign 对象,但同样的概念也适用于所有其他特定于资源类型的服务。

Mutate 请求

每种资源类型专属服务都有一个 mutate 方法,用于接受 mutate 请求。此请求包含以下内容:

  • customer_id(或 REST 网址中的 customerId)
  • operations合集
  • 可选执行设置,例如 partial_failure、validate_only 和 response_content_type(用于确定在更改后是返回可变资源还是仅返回资源名称)

例如,CampaignService 的 MutateCampaigns 方法接受由以下内容组成的 MutateCampaignsRequest:

  • customer_id
  • CampaignOperation 个对象的集合 (operations)
  • 可选执行设置(partial_failure、validate_only 和 response_content_type,用于指示首选响应类型)

操作

借助 CampaignOperation 等操作对象,您可以通过设置其 operation 字段来指定要对单个资源执行的操作。此字段是一个 oneof 字段,由以下属性组成:

create
创建资源的新实例。
update
更新资源以匹配 update 资源的属性。设置此字段时,您还必须设置操作的 update_mask,以告知 Google Ads API 在更新操作期间要修改哪些属性。每个客户端库都包含一个字段掩码实用程序或辅助方法,可为您生成 update_mask。
remove
移除由其资源名称字符串(例如 customers/1234567890/campaigns/987654321)指定的资源。

由于 operation 字段是 oneof 字段,因此您无法使用单个操作修改多个对象。例如,如果您想创建一个广告系列并移除另一个广告系列,请向请求中添加两个 CampaignOperation 实例:一个设置 create,另一个设置 remove。

批量操作

虽然一个操作只能创建、更新或移除一个资源,但是一个 mutate 请求中可包含多个操作。您应该将操作合并到单个 mutate 请求中,而不是发送多个 mutate 请求,每个请求仅包含一个操作。

例如,如果您要创建 10 个广告系列,则应发送一个包含 10 个 CampaignOperation 对象的 MutateCampaignsRequest。如需将针对不同资源类型的操作分组到单个请求中,请使用 GoogleAdsService.Mutate 或变更资源。

Mutate 响应

响应中返回的内容取决于 mutate 请求的 response_content_type 字段中发送的内容。 例如,如果指定了 MUTABLE_RESOURCE,则响应会同时包含资源的 resource_name 和 campaign 中广告系列的可变字段。默认情况下 (RESOURCE_NAME_ONLY),每个 MutateCampaignResult 中仅填充 resource_name。

Mutate 错误

默认情况下 (partial_failure = false),只有当 mutate 请求中的每项操作都成功时,系统才会将该请求中的操作应用于您的 Google Ads 账号;如果任何操作失败,系统都会回滚整个请求。对于支持部分失败的 mutate 请求(即请求消息中包含 partial_failure 字段的请求),设置 partial_failure = true 会提交有效操作,而失败的操作会在响应的 partial_failure_error 字段中返回特定于操作的错误。如需详细了解如何处理错误,请参阅部分失败指南和常见错误指南。

跟踪更改

如需跟踪对 Google Ads 账号中的对象所做的更改,或检索对象的当前状态,您可以使用 change_status 和 change_event 资源。

  • change_status 提供了在给定时间段内哪些资源发生了更改的摘要。
  • change_event 提供更改的详细历史记录,包括更改字段的旧值和新值。

如需查询这些资源,请使用 GoogleAdsService.SearchStream 或 GoogleAdsService.Search 方法。详细了解如何使用 GoogleAdsService 流式传输报告。