如 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_idCampaignOperation个对象的集合 (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 流式传输报告。