Google Ads API 提供了多种更改资源的方法,具体取决于您的用例:
- 资源服务变更:每个可变资源都有一个专用服务,用于执行针对该特定资源类型的操作。例如,
Campaign资源使用CampaignService.MutateCampaigns端点来创建、更新或移除广告系列。 - 批量更改:
GoogleAdsService.Mutate端点在单个同步请求中封装了跨多种资源类型的一系列更改操作(以及支持的操作,例如预订或报价广告系列)。 - 异步批量作业:对于大规模变更或长时间运行的工作负载,
BatchJobService会异步执行操作,而不会有同步请求超时的风险。与GoogleAdsService.Mutate不同,BatchJobService始终在部分失败语义下执行,不支持validate_only模式或操作操作(book_campaigns_operation、quote_campaigns_operation)。由于部分失败始终处于活跃状态,BatchJobService会拒绝底层服务不支持部分失败的资源操作(例如CustomerOperation、CampaignConversionGoalOperation、ConversionGoalCampaignConfigOperation、CustomConversionGoalOperation和CustomerConversionGoalOperation),并返回MutateError.OPERATION_DOES_NOT_SUPPORT_PARTIAL_FAILURE。
批量变更的优势
使用 GoogleAdsService.Mutate 可带来以下好处(如需了解实现指南,请参阅更改最佳实践):
- 跨不同资源服务的分组操作:虽然单个资源服务调用仅接受针对单个资源类型的操作,但
GoogleAdsService.Mutate允许您在一次调用中更改多个资源类型。 - 临时资源名称:您可以为新创建的父实体分配负整数 ID(例如
customers/CUSTOMER_ID/campaigns/-1),并在同一请求中的子操作中引用这些临时 ID。
借助这些功能,您可以使用 GoogleAdsService.Mutate 以原子方式创建整个广告系列层次结构,以便所有操作一起成功或失败,或者将 partial_failure 设置为 true 以独立提交有效操作。