При работе с фильтрами групп предложений в контексте AdGroupCriterion.listing_group или AssetGroupListingGroupFilter учитывайте следующие рекомендации при разработке интеграции.
Пакетное разделение
Если в пакетном задании есть операции, содержащие критерии группы объявлений или фильтры группы товаров, то при получении сервером Google Рекламы 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.