Мутировать ресурсы

API Google Ads предоставляет несколько способов изменения ресурсов в зависимости от конкретного случая:

  • Ресурсы изменяются : для каждого изменяемого ресурса существует выделенная служба, которая выполняет операции для этого конкретного типа ресурса. Например, ресурс Campaign использует конечную точку CampaignService.MutateCampaigns для создания, обновления или удаления кампаний.
  • Массовые изменения : конечная точка GoogleAdsService.Mutate объединяет последовательность операций изменения для нескольких типов ресурсов (а в версии 23 и более поздних версиях — поддерживаемые операции действий, такие как бронирование или составление предложений для кампаний) в один синхронный запрос.
  • Асинхронные пакетные задания : Для крупномасштабных изменений или длительных рабочих нагрузок BatchJobService выполняет операции асинхронно, не рискуя столкнуться с таймаутами синхронных запросов. В отличие от GoogleAdsService.Mutate , BatchJobService всегда выполняется с семантикой частичного сбоя и не поддерживает режим validate_only или операции действий ( book_campaigns_operation , quote_campaigns_operation ). Поскольку частичный сбой всегда активен, BatchJobService отклоняет операции с ресурсами, базовые сервисы которых не поддерживают частичный сбой (например, CustomerOperation , CampaignConversionGoalOperation , ConversionGoalCampaignConfigOperation , CustomConversionGoalOperation и CustomerConversionGoalOperation ), с MutateError.OPERATION_DOES_NOT_SUPPORT_PARTIAL_FAILURE .

Преимущества массовых мутаций

Использование GoogleAdsService.Mutate предоставляет следующие преимущества (см. рекомендации по внедрению Mutate ):

  • Группировка действий для различных сервисов ресурсов: в то время как отдельные вызовы сервисов ресурсов принимают операции только для одного типа ресурсов, GoogleAdsService.Mutate позволяет изменять несколько типов ресурсов за один вызов.
  • Временные имена ресурсов: Вы можете присваивать отрицательные целочисленные идентификаторы (например, customers/CUSTOMER_ID/campaigns/-1 ) вновь созданным родительским сущностям и ссылаться на эти временные идентификаторы в дочерних операциях в рамках того же запроса.

Благодаря этим возможностям вы можете использовать GoogleAdsService.Mutate для атомарного создания всей иерархии кампаний, чтобы все операции выполнялись одновременно или завершались с ошибкой, или установить partial_failure в true для независимого подтверждения корректных операций.