Как использовать фильтры групп предложений в пакетных заданиях

При работе с фильтрами групп товаров в контексте AdGroupCriterion.listing_group или AssetGroupListingGroupFilter учитывайте приведенные ниже рекомендации.

Разделение пакетов

Если в пакетном задании есть операции, содержащие критерии группы объявлений или фильтры групп товаров в группе объектов, то при получении сервером Google Ads API эти операции разбиваются на несколько подпакетов. В отличие от стандартных операций в пакетном задании, каждый подпакет, содержащий операции с фильтрами групп предложений, обрабатывается как единое целое.

Разделение пакетных заданий с фильтрами групп товаров на подпакеты зависит от следующих факторов:

  1. Тип фильтра группы товаров
  2. AdGroup или AssetGroup, на которые настроен таргетинг фильтра групп товаров.
  3. Порядок операций

Рассмотрим, как группируются операции:

  • Все последовательные операции 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:

Эти ошибки указывают, что операция с этим индексом была отменена, поскольку произошел сбой другой операции в том же атомарном подпакете. Чтобы определить основную причину проблемы, просмотрите сообщения status в каждом BatchJobResult до и после operation_index ошибки транзакции для операций с одинаковым идентификатором AdGroup или AssetGroup.