在 AdGroupCriterion.listing_group 或 AssetGroupListingGroupFilter 的情境下使用商家資訊群組篩選器時,請在設計整合時考量下列事項。
批次分割
如果批次工作中的任何作業包含廣告群組條件或素材資源群組商家資訊群組篩選器,Google Ads API 伺服器收到批次工作時,會將作業拆分為多個子批次。與批次工作中的標準作業不同,每個包含商家資訊群組篩選器作業的子批次都會視為完整作業。
包含商家資訊群組篩選器的批次工作,會根據下列因素分割成子批次:
- 商家資訊群組篩選器類型
- 商家資訊群組篩選器指定的
AdGroup或AssetGroup - 作業順序
請考量作業的分組方式:
- 所有連續的
AssetGroupListingGroupFilterOperation作業 (create、update和remove) 如果指定相同的AssetGroup,就會歸入同一個不可分割的子批次 (不會有部分失敗行為)。 - 針對指定相同
AdGroup的LISTING_GROUP條件 (AdGroupCriterion.listing_group),所有連續的AdGroupCriterionOperation作業 (create、update和remove) 會分組到一個不可分割的子批次中 (沒有部分失敗行為)。 - 所有其他連續作業都會分組到非完整子批次 (部分失敗行為)。
下圖說明這個概念。每個灰色方塊代表使用 Google Ads API 提交的批次工作。在灰色方塊中,個別作業會依顏色分組,代表 Google Ads API 伺服器建立的子批次。每個灰色方塊中的作業順序,對應至作業新增至批次工作的順序。
限制
在批次工作中使用商家資訊群組篩選器時,須遵守下列限制:
- 針對
LISTING_GROUP標準 (AdGroupCriterion.listing_group) 且指定相同AdGroup的連續AdGroupCriterionOperation作業 (create、update和remove),單一完整子批次長度不得超過 20,000 項作業。不過,建議不要超過 10,000 項作業。由於每個AddBatchJobOperationsRequest的作業上限為 10,000 項,因此 10,001 至 20,000 項作業的AdGroup子批次必須透過至少兩個連續的AddBatchJobOperations要求上傳。 - 針對同一個
AssetGroup的連續AssetGroupListingGroupFilterOperation作業 (create、update和remove),單一完整子批次不得超過 10,000 項作業。 - 如果違反上述任一作業數量限制 (或超過伺服器對單一子批次的內部序列化位元組大小限制),批次工作會在該子批次中止:先前已完成的任何子批次仍會提交,但違規子批次和任何後續子批次中的所有作業都會失敗,並傳回
InternalError.INTERNAL_ERROR。
疑難排解
批次工作中,系統會將商家資訊群組篩選作業視為單一交易處理,因此少數錯誤作業可能會導致許多作業失敗。此外,由於 BatchJob 作業的處理方式,失敗的根本原因可能會出現在下游失敗之前或之後的索引。
舉例來說,處理 ListBatchJobResults 的回應時:
- 如果是
AdGroupCriterionOperation商家資訊群組,您可能會發現針對相同AdGroup的連續作業失敗,並顯示CriterionError.LISTING_GROUP_ERROR_IN_ANOTHER_OPERATION(Product group operations are atomic within the same ad group. This operation failed because another operation targeting the same ad group ID was invalid.)。 - 如果是
AssetGroupListingGroupFilterOperation作業,您可能會發現針對相同AssetGroup的連續作業失敗,並顯示BatchJobError.ASSET_GROUP_LISTING_GROUP_FILTER_TRANSACTION_FAILURE。
這類錯誤表示該索引處的作業已復原,因為同一原子子批次中的另一項作業失敗。如要找出問題的根本原因,請在交易錯誤的 operation_index 前後,逐一查看每個 BatchJobResult 中的 status 訊息,找出共用相同 AdGroup 或 AssetGroup ID 的作業。