Получение ссылок на все необходимые для использования API прототипы классов в Python может быть многословным процессом и требует от вас либо глубокого понимания API, либо частого переключения контекста для обращения к прототипам или документации.
Методы get_service и get_type клиента
Эти два метода-геттера позволяют получить любой объект сервиса или типа в API. Метод get_service используется для получения клиентов сервисов. get_type используется для любых других объектов. Классы клиентов сервисов определены в коде в каталоге версии google/ads/googleads/v*/services/services/ , а все типы определены в различных категориях объектов ` google/ads/googleads/v*/common|enums|errors|resources|services/types/ . Весь код в каталоге версии генерируется автоматически, поэтому рекомендуется использовать эти методы вместо прямого импорта объектов на случай изменения структуры кодовой базы.
Вот пример того, как использовать метод get_service для получения экземпляра клиента GoogleAdsService .
from google.ads.googleads.client import GoogleAdsClient
# "load_from_storage" loads your API credentials from disk so they
# can be used for service initialization. Providing the optional `version`
# parameter means that the v23 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v23")
googleads_service = client.get_service("GoogleAdsService")
Вот пример использования метода get_type для получения экземпляра Campaign .
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v23")
campaign = client.get_type("Campaign")
Перечисления
Хотя для получения перечислений можно использовать метод get_type , каждый экземпляр GoogleAdsClient также имеет атрибут ` enums , который динамически загружает перечисления, используя тот же механизм, что и метод get_type . Этот интерфейс призван быть проще и понятнее, чем использование get_type :
client = GoogleAdsClient.load_from_storage(version=v23)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
Поля прототипных объектов, являющиеся перечислениями (enum), в Python представлены собственным типом перечисления (enum) . Это означает, что вы можете легко прочитать значение элемента. Работа с экземпляром campaign из предыдущего примера в интерактивной консоли Python:
>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3
Иногда полезно знать имя поля, соответствующего значению перечисления, как показано выше. Вы можете получить доступ к этой информации, используя атрибут name :
>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>
Взаимодействие с перечислениями различается в зависимости от того, установлен ли параметр use_proto_plus в true или false . Подробную информацию о двух интерфейсах см. в документации по сообщениям protobuf .
Версионирование
Одновременно поддерживается несколько версий API. Хотя версия v23 может быть последней, более ранние версии остаются доступными до тех пор, пока их поддержка не будет прекращена. Библиотека будет включать отдельные прототипы классов сообщений, соответствующие каждой активной версии API. Для доступа к классу сообщений для конкретной версии укажите ключевой параметр version при инициализации клиента, чтобы он всегда возвращал экземпляр из данной версии:
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v23/")
# The Campaign instance will be from the v23 version of the API.
campaign = client.get_type("Campaign")
Также можно указать версию при вызове методов get_service и get_type . Это переопределит версию, указанную при инициализации клиента:
client = GoogleAdsService.load_from_storage()
# This will load the v23 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v23")
client = GoogleAdsService.load_from_storage(version="v23")
# This will load the v21 version of a Campaign.
campaign = client.get_type("Campaign", version="v21")
Если параметр ключевого слова version не указан, библиотека по умолчанию будет использовать последнюю версию. Актуальный список последних и других доступных версий можно найти в разделе навигации слева в документации по API .