Изменение ресурсов

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, чтобы фиксировать допустимые операции независимо.