Google Ads API предоставляет несколько способов изменения ресурсов в зависимости от ваших потребностей:
- Изменение сервиса ресурсов. У каждого изменяемого ресурса есть специальный сервис, который выполняет операции для этого конкретного типа ресурса. Например, ресурс
Campaignиспользует конечную точкуCampaignService.MutateCampaignsдля создания, обновления или удаления кампаний. - Массовые изменения. Конечная точка
GoogleAdsService.Mutateпозволяет выполнить последовательность операций изменения для нескольких типов ресурсов (и поддерживаемых операций, таких как резервирование или расчет стоимости кампаний) в рамках одного синхронного запроса. - Асинхронные пакетные задания. Для крупномасштабных изменений или длительных рабочих нагрузок
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, чтобы фиксировать допустимые операции независимо.