在 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 訊息。