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