如 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,则
响应会在 campaign 中同时包含资源的
resource_name 和广告系列的可变字段。默认情况下 (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 进行 报告流式传输
。