在AdGroupCriterion.listing_group或AssetGroupListingGroupFilter的背景下使用商家資訊群組篩選器時,請在設計整合功能時考量下列事項。
批次分割
如果批次工作中的任何作業包含廣告群組條件或素材資源群組商家資訊群組篩選器,Google Ads API 伺服器收到批次工作時,會將作業分割成多個子批次。與批次作業中的標準作業不同,每個包含商店資訊群組篩選器作業的子批次都會視為不可分割的作業。
含有商家資訊群組篩選器的批次作業會分割成子批次,分割方式取決於下列因素:
- 商家資訊群組篩選器類型
AdGroup或AssetGroup商家資訊群組篩選器指定目標- 作業順序
考量作業的分組方式:
- 針對相同
AssetGroup的所有連續AssetGroupListingGroupFilterOperation作業 (create、update和remove) 會歸類在完整子批次中 (不會發生部分失敗行為)。 - 針對相同
AdGroup的所有連續AdGroupCriterionOperation作業 (create、update和remove),會依LISTING_GROUP條件 (AdGroupCriterion.listing_group) 分組為完整子批次 (不會出現部分失敗行為)。 - 所有其他連續作業都會歸入非完整子批次 (部分失敗行為)。
下圖說明這個概念。每個灰色方塊代表透過 Google Ads API 提交的批次工作。在灰色方塊中,個別作業會依顏色分組,代表 Google Ads API 伺服器建立的子批次。每個灰色方塊中的作業順序,對應於作業新增至批次工作中的順序。
限制
在批次作業的環境中使用商家資訊群組篩選條件時,有以下限制:
- 針對相同
AdGroup的LISTING_GROUPAdGroupCriterion.listing_group,連續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。
這些錯誤表示該索引處的作業已回溯,因為同一項原子子批次中的另一項作業失敗。如要找出問題的根本原因,請針對共用相同 AdGroup 或 AssetGroup ID 的作業,逐一檢查交易錯誤operation_index前後的每個 BatchJobResult status 訊息。