Извлечение ссылок на все различные классы прототипов, необходимые для использования 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 v20 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v20")
googleads_service = client.get_service("GoogleAdsService")
Вот пример использования метода get_type
для получения экземпляра Campaign
.
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v20")
campaign = client.get_type("Campaign")
Перечисления
Хотя метод get_type
можно использовать для получения перечислений, каждый экземпляр GoogleAdsClient
также имеет атрибут enums
, который динамически загружает перечисления, используя тот же механизм, что и метод get_type
. Этот интерфейс призван быть более простым и понятным, чем метод get_type
:
client = GoogleAdsClient.load_from_storage(version=v20)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
Поля объектов Proto, являющиеся перечислениями, представлены в 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. Хотя версия v20
может быть последней, более ранние версии будут доступны до окончания срока их действия. Библиотека будет включать отдельные классы сообщений proto, соответствующие каждой активной версии API. Чтобы получить доступ к классу сообщений для конкретной версии, укажите ключевое слово version
при инициализации клиента, чтобы он всегда возвращал экземпляр этой версии:
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v20/")
# The Campaign instance will be from the v20 version of the API.
campaign = client.get_type("Campaign")
Версию также можно указать при вызове методов get_service
и get_type
. Это переопределит версию, указанную при инициализации клиента:
client = GoogleAdsService.load_from_storage()
# This will load the v20 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v20")
client = GoogleAdsService.load_from_storage(version="v20")
# This will load the v18 version of a Campaign.
campaign = client.get_type("Campaign", version="v18")
Если ключевое слово version
не указано, библиотека по умолчанию будет использовать последнюю версию. Обновлённый список последних и других доступных версий можно найти в левой части навигации справочной документации API .