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