При работе с фильтрами групп товаров в контексте AdGroupCriterion.listing_group или AssetGroupListingGroupFilter учитывайте приведенные ниже рекомендации.
Разделение пакетов
Если в пакетном задании есть операции, содержащие критерии группы объявлений или фильтры групп товаров в группе объектов, то при получении сервером Google Ads API эти операции разбиваются на несколько подпакетов. В отличие от стандартных операций в пакетном задании, каждый подпакет, содержащий операции с фильтрами групп предложений, обрабатывается как единое целое.
Разделение пакетных заданий с фильтрами групп товаров на подпакеты зависит от следующих факторов:
- Тип фильтра группы товаров
AdGroupилиAssetGroup, на которые настроен таргетинг фильтра групп товаров.- Порядок операций
Рассмотрим, как группируются операции:
- Все последовательные операции
AssetGroupListingGroupFilterOperation(create,updateиremove), направленные на один и тот же объектAssetGroup, группируются в атомарный подпакет (без частичных сбоев). - Все последовательные операции
AdGroupCriterionOperation(create,updateиremove) для критериевLISTING_GROUP(AdGroupCriterion.listing_group) с таргетингом на один и тот же объектAdGroupгруппируются в атомарный подпакет (частичные сбои невозможны). - Все остальные последовательные операции группируются в неатомарные подпакеты (поведение при частичном сбое).
Эта концепция проиллюстрирована на следующей схеме. Каждый из серых прямоугольников представляет пакетное задание, отправленное с помощью Google Ads API. Внутри серых полей отдельные операции сгруппированы по цвету, чтобы показать подпакеты, создаваемые сервером Google Ads API. Порядок операций в каждом из серых полей соответствует порядку, в котором операции были бы добавлены в пакетное задание.
Ограничения
При работе с фильтрами групп товаров в контексте пакетных заданий действуют следующие ограничения:
- Один атомарный подпакет последовательных операций
AdGroupCriterionOperation(create,updateиremove) для критериевLISTING_GROUP(AdGroupCriterion.listing_group) с таргетингом на один и тот же объектAdGroupне может содержать более 20 000 операций. Однако мы рекомендуем не превышать лимит в 10 000 операций. Поскольку каждый запросAddBatchJobOperationsRequestможет содержать не более 10 000 операций, подпакетAdGroup, содержащий от 10 001 до 20 000 операций, должен быть загружен как минимум в двух последовательных запросахAddBatchJobOperations. - Один атомарный подпакет последовательных операций
AssetGroupListingGroupFilterOperation(create,updateиremove), предназначенных для одного и того жеAssetGroup, не может превышать 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.
Эти ошибки указывают, что операция с этим индексом была отменена, поскольку произошел сбой другой операции в том же атомарном подпакете. Чтобы определить основную причину проблемы, просмотрите сообщения status в каждом BatchJobResult до и после operation_index ошибки транзакции для операций с одинаковым идентификатором AdGroup или AssetGroup.