Métodos get de tipo y servicio

Recuperando referencias a todas las diferentes clases proto necesarias para usar la API en Python puede ser detallado y requiere un conocimiento intrínseco del o cambiar de contexto con frecuencia para hacer referencia a los protos o la documentación.

Los métodos get_service y get_type del cliente

Estos dos métodos get te permiten recuperar cualquier servicio o objeto de tipo en la en la API de Cloud. El método get_service se usa para recuperar clientes de servicio. get_type se usa para cualquier otro objeto. Las clases de cliente de servicio se definen en el código en la ruta de la versión google/ads/googleads/v*/services/services/ y de objetos se definen en las diversas categorías de objetos, google/ads/googleads/v*/common|enums|errors|resources|services/types/ Se genera todo el código que está debajo del directorio de versiones, por lo que es una mejor practicar el uso de estos métodos en lugar de importar los objetos directamente, en caso de que la los cambios en la estructura de la base de código.

Este es un ejemplo de cómo usar el método get_service para recuperar una instancia del cliente 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")

Este es un ejemplo de cómo usar el método get_type para recuperar un Campaign.

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v17")
campaign = client.get_type("Campaign")

Enumeraciones

Si bien puedes usar el método get_type para recuperar enumeraciones, cada La instancia GoogleAdsClient también tiene un atributo enums que carga enumeraciones con el mismo mecanismo que el método get_type. Esta interfaz Está diseñado para ser más simple y fácil de leer que usar get_type:

client = GoogleAdsClient.load_from_storage(version=v17)

campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED

Los campos de objetos proto que son de enumeración se representan en Python por el lenguaje enum. Eso significa que pueda leer fácilmente el valor del miembro. Trabaja con la instancia campaign del ejemplo anterior en un repositorio de Python:

>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3

A veces, es útil saber el nombre del campo que corresponde al enum, como se muestra más arriba. Puedes acceder a esta información a través de la name. atributo:

>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>

La interacción con enumeraciones es diferente dependiendo de si tienes use_proto_plus establecida en true o false. Para obtener detalles sobre las dos interfaces, consulta la documentación de mensajes de protobuf.

Control de versiones

Se mantienen múltiples versiones de la API al mismo tiempo. Mientras que Es posible que v17 sea la versión más reciente, mientras que las anteriores siguen siendo accesible hasta el atardecer. La biblioteca incluirá archivos proto independientes que corresponden a cada versión activa de la API. Cómo acceder a un mensaje para una versión específica suministra el parámetro de palabra clave version cuando inicializas un cliente para que siempre devuelva una instancia de ese versión:

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")

También es posible especificar la versión cuando se llama a get_service y get_type. Esto anulará la versión proporcionada cuando para inicializar el cliente:

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")

Si no se proporciona ningún parámetro de palabra clave version, la biblioteca usará de forma predeterminada la última versión. Una lista actualizada de las versiones más recientes y otras disponibles puedes encontrar en la sección de navegación de la izquierda de la Referencia de la API.