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 для независимого подтверждения корректных операций.