更改对象

如 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 进行报告流式传输 。