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

Использование специального сервиса ресурса – это самый прямой способ создания, обновления или удаления объектов одного типа ресурса в Google Ads API.

Конечные точки изменения

Каждому изменяемому ресурсу соответствует определенный тип сервиса и операции. Чтобы изменить ресурс с помощью предназначенного для него сервиса, заполните одно из следующих полей в операции и отправьте ее в конечную точку изменения сервиса:

  • Create (create): создание нового объекта ресурса.
  • Обновление (update). Измененный объект ресурса, сопровождаемый update_mask, в котором указаны измененные поля.
  • Remove (remove): строка resource_name целевого ресурса, который нужно удалить.

Например, чтобы создать новый Campaign, выполните следующие действия:

  1. Создайте объект Campaign с выбранными атрибутами.
  2. Назначьте его полю create объекта CampaignOperation.
  3. Отправьте операцию в MutateCampaignsRequest в CampaignService.MutateCampaigns.

Этот же шаблон применяется ко всем сервисам, связанным с ресурсами, в Google Ads API:

Ниже приведен пример полезной нагрузки REST JSON для запроса к CampaignService.MutateCampaigns.

{
  "customerId": "CUSTOMER_ID",
  "operations": [
    {
      "create": {
        "name": "Interplanetary Cruise #1",
        "advertisingChannelType": "SEARCH",
        "status": "PAUSED",
        "manualCpc": {},
        "campaignBudget": "customers/CUSTOMER_ID/campaignBudgets/BUDGET_ID",
        "containsEuPoliticalAdvertising": "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING"
      }
    }
  ],
  "partialFailure": false,
  "validateOnly": false
}

Несколько операций и ограничений

Большинство запросов mutate, относящихся к определенному ресурсу, принимают повторяющееся поле operations, поэтому один запрос может содержать несколько операций для этого типа ресурса (до 10 000 операций на запрос или 20 000 для AdGroupCriterionService.MutateAdGroupCriteria; CustomerService.MutateCustomer принимает одно поле operation). По умолчанию все операции в запросе выполняются атомарно, если сервис не поддерживает partial_failure и вы не установили для него значение true.

Однако у отдельных сервисов ресурсов есть два важных ограничения:

  • Один тип ресурса. Запрос к сервису ресурсов может изменять только ресурсы, управляемые этим сервисом.
  • Нельзя использовать временные идентификаторы для разных ресурсов. Поскольку вызов mutate для определенного ресурса принимает только один тип ресурса, вы не можете назначить временный отрицательный идентификатор родительскому ресурсу (например, customers/CUSTOMER_ID/campaigns/-1) и сослаться на него из дочернего ресурса другого типа (например, AdGroup) в том же запросе. (Временные идентификаторы, ссылающиеся на себя, в пределах одного типа ресурсов поддерживаются для иерархических деревьев, таких как группы товаров AdGroupCriterion и узлы AssetGroupListingGroupFilter).

Если вам нужно изменить несколько типов ресурсов в одном запросе или сослаться на временные названия ресурсов разных типов, используйте GoogleAdsService.Mutate.

Различия между версиями

При изменении ресурсов учитывайте следующие различия между поддерживаемыми версиями Google Ads API:

  • Сервисы целей по жизненному циклу. Цели "Удержание клиентов" изменяются во всех поддерживаемых версиях с помощью GoalService.MutateGoals (retention_goal_settings) и CampaignGoalConfigService.MutateCampaignGoalConfigs (campaign_retention_settings) с использованием стандартного повторяющегося поля operations. В версии 25 и более поздних версиях привлечение новых клиентов (new_customer_acquisition_goal_settings/campaign_new_customer_acquisition_settings) и удержание постоянных клиентов (loyalty_retention_goal_settings/campaign_loyalty_retention_settings) также изменяются с помощью GoalService.MutateGoals и CampaignGoalConfigService.MutateCampaignGoalConfigs. Они заменяют поля CustomerLifecycleGoalService.ConfigureCustomerLifecycleGoals и CampaignLifecycleGoalService.ConfigureCampaignLifecycleGoals, которые использовались для привлечения новых клиентов в версиях 23 и 24 и принимали одно поле operation.