Как описано в руководстве по структуре API, у каждого ресурса верхнего уровня в Google Ads API есть соответствующий сервис, который поддерживает изменение экземпляров ресурса. Вы также можете использовать GoogleAdsService.Mutate, чтобы атомарно изменять несколько типов ресурсов в одном запросе.
В этом руководстве на примере CampaignService показано, как изменять объекты Campaign, но те же принципы применимы и к другим сервисам, связанным с определенными типами ресурсов.
Запросы mutate
У каждого сервиса, предназначенного для определенного типа ресурсов, есть метод mutate, который принимает запрос mutate. Запрос состоит из следующих элементов:
customer_id(илиcustomerIdв URL REST)- Подборка
operations - Дополнительные настройки выполнения, например
partial_failure,validate_onlyиresponse_content_type(определяет, возвращается ли изменяемый ресурс или только его название после изменения).
Например, метод MutateCampaigns в CampaignService принимает объект MutateCampaignsRequest, который состоит из следующих элементов:
customer_id- Коллекция из
CampaignOperationобъектов (operations) - Необязательные настройки выполнения (
partial_failure,validate_onlyиresponse_content_type, указывающие предпочтительный тип ответа).
Операции
Объект операции, например CampaignOperation, позволяет указать действие, которое вы хотите выполнить с одним ресурсом, задав его поле operation.
Это поле oneof, состоящее из следующих атрибутов:
create- Создает новый экземпляр ресурса.
update- Обновляет ресурс в соответствии с атрибутами ресурса
update. Если вы задали это поле, вам также необходимо указатьupdate_maskоперации, чтобы Google Ads API знал, какие атрибуты нужно изменить во время операции обновления. В каждой клиентской библиотеке есть утилита или вспомогательный метод для создания маски поля, которые генерируютupdate_mask. remove- Удаляет ресурс, указанный в строке с названием ресурса (например,
customers/1234567890/campaigns/987654321).
Поскольку поле operation является полем oneof, вы не можете использовать одну операцию для изменения нескольких объектов. Например, если вы хотите создать одну кампанию и удалить другую, добавьте в запрос два экземпляра CampaignOperation: один с параметром create, а другой – с параметром remove.
Массовые операции
Хотя одна операция может только создать, обновить или удалить один ресурс, один запрос на изменение может содержать несколько операций. Объединяйте операции в один запрос mutate, а не отправляйте несколько запросов, каждый из которых содержит одну операцию.
Например, если вы хотите создать десять кампаний, вам нужно отправить один объект MutateCampaignsRequest, содержащий десять объектов CampaignOperation. Чтобы сгруппировать операции с разными типами ресурсов в один запрос, используйте GoogleAdsService.Mutate или изменяющие ресурсы.
Изменение ответов
Содержимое ответа зависит от того, что было отправлено в поле response_content_type запроса mutate.
Например, если указано значение MUTABLE_RESOURCE, то ответ будет содержать как resource_name ресурса, так и изменяемые поля кампании в campaign. По умолчанию (RESOURCE_NAME_ONLY) в каждом элементе MutateCampaignResult заполняется только поле resource_name.
Ошибки изменения
По умолчанию (partial_failure = false) операции в запросе mutate применяются к аккаунту Google Рекламы, только если каждая операция в запросе выполнена успешно. Если хотя бы одна операция завершится неудачно, весь запрос будет откачен. Для запросов mutate, поддерживающих частичный сбой (с полем partial_failure в сообщении запроса), установка значения partial_failure = true приводит к тому, что действительные операции выполняются, а для операций, которые не удалось выполнить, возвращаются ошибки, относящиеся к определенной операции, в поле partial_failure_error ответа. Подробнее о том, как устранять ошибки, рассказывается в руководстве по частичным сбоям и руководстве по распространенным ошибкам.
Отслеживание изменений
Чтобы отслеживать изменения, внесенные в объекты в аккаунте Google Рекламы, или получать текущее состояние объектов, можно использовать ресурсы change_status и change_event.
change_statusпредоставляет сводку ресурсов, которые изменились за определенный период времени.change_event– подробная история изменений, в том числе старые и новые значения измененных полей.
Чтобы запросить эти ресурсы, используйте метод GoogleAdsService.SearchStream или GoogleAdsService.Search. Подробнее о потоковой передаче отчетов с помощью GoogleAdsService…