在 AdGroupCriterion.listing_group 或 AssetGroupListingGroupFilter 的上下文中处理商品详情组过滤条件时,请在设计集成时考虑以下事项。
批次拆分
如果批处理作业中包含任何广告组条件或素材资源组商品详情组过滤条件,则当 Google Ads API 服务器收到该批处理作业时,其中的操作会被拆分为多个子批次。请注意,与批处理作业中的标准操作不同,包含商品详情组过滤操作的每个子批处理都会被视为原子操作。
包含商品详情组过滤条件的批处理作业拆分为子批次的方式取决于以下因素:
- 商品详情组过滤条件的类型
AdGroupCriterion或AssetGroup产品信息组过滤条件定位到- 操作顺序
考虑操作的分组方式:
- 以同一
AssetGroup为目标的所有连续AssetGroupListingGroupFilterOperation操作都将分组到原子子批处理中(不会出现部分失败行为)。 - 所有包含针对同一
AdGroup的listing_group的连续AdGroupCriterionOperation操作都将分组到原子子批次中(不会出现部分失败行为)。 - 所有其他连续操作都将分组到非原子子批次中(部分失败行为)。
下图展示了这一概念。每个灰色框都表示使用 Google Ads API 提交的批处理作业。在灰色框内,各个操作按颜色分组,表示 Google Ads API 服务器创建的子批次。每个灰色框中的操作顺序与将操作添加到批处理作业的顺序相对应。
批量拆分中的原子性
Google Ads API 可能会将提交的批处理作业中的操作拆分为较小的子批次进行处理。如果您未将相关操作(例如 AssetGroup 和 AdGroup 中的列表组修改)在批处理作业中连续分组,Google Ads API 可能会将这些操作拆分为不同的子批处理。这种分离可能会导致整个修改失败,或者使账号处于不一致的状态。
逻辑分组
AssetGroupListingGroupFilterOperation 管理 AssetGroup 中的商品信息组,这在效果最大化广告系列中很常见。
AdGroupCriterionOperation 用于管理 AdGroup 中的商品详情组,这在标准购物广告系列中很常见。两者都用于定义商品定位。如果您所做的更改会影响两个上下文中的商品定位层次结构,请在批处理作业中连续分组这些操作,以确保它们一起应用。
数据一致性
为保持数据一致性并防止部分更新,请将相关商品详情组操作连续添加到批量作业中。这种排序方式有助于通过 API 的批次拆分逻辑将它们分组为原子子批次,从而防止您的账号处于不一致的状态。
限制
在批处理作业中处理商品详情组过滤条件时,存在以下限制:
- 包含
AdGroupCriterionOperation操作且以同一AdGroup为目标对象的单个批量操作的长度不得超过 20,000 个操作。listing_group不过,建议不要超过 10,000 次操作。 - 针对同一
AssetGroup的单个批次AssetGroupListingGroupFilterOperation操作不得超过 10,000 次。 - 如果违反其中任一条件,整个批处理作业都会失败。
问题排查
批处理作业中的商品详情组过滤条件操作会作为一个事务进行处理,这可能会导致因少量错误操作而导致许多操作失败。此外,由于 BatchJob 操作的处理方式,故障的根本原因可能会出现在下游故障之前的索引处,也可能会出现在下游故障之后的索引处。
例如,在处理 ListBatchJobResults 的响应时,您可能会发现多项操作失败,并显示状态消息 Ad group is invalid due to the listing
groups it contains。此消息通常表示,由于其他索引处的操作失败,此索引处的操作已被取消。为了确定问题的根本原因,我们建议您在 BatchJobResult 中迭代检查所有状态消息(包括 Ad group is invalid 错误消息的索引之前和之后的状态消息),以查找其他错误信息。