Геттеры сервисов и типов

Получение ссылок на все различные классы прототипов, необходимые для использования 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 .