Obtener referencias a todas las clases proto necesarias para usar la API en Python puede ser detallado y requiere que tengas una comprensión intrínseca de la API o que cambies de contexto con frecuencia para hacer referencia a los protos o la documentación.
Métodos get_service y get_type del cliente
Estos dos métodos getter te permiten recuperar cualquier objeto de servicio o tipo en la API. 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 acceso de la versión google/ads/googleads/v*/services/services/, y todos los tipos se definen en las distintas categorías de objetos, google/ads/googleads/v*/common|enums|errors|resources|services/types/.
Todo el código que se encuentra debajo del directorio de la versión se genera, por lo que es una práctica recomendada usar estos métodos en lugar de importar los objetos directamente, en caso de que cambie la estructura de la base de código.
A continuación, se muestra 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 v25 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v25")
googleads_service = client.get_service("GoogleAdsService")
A continuación, se muestra un ejemplo de cómo usar el método get_type para recuperar una
Campaign instancia.
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v25")
campaign = client.get_type("Campaign")
Enums
Si bien puedes usar el método get_type para recuperar Enums, cada instancia de GoogleAdsClient también tiene un atributo enums que carga Enums de forma dinámica con el mismo mecanismo que el método get_type. Esta interfaz está diseñada para ser más simple y fácil de leer que usar get_type:
client = GoogleAdsClient.load_from_storage(version=v25)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
Los campos de objetos proto que son enums se representan en Python con el tipo de enum nativo
enum. Eso significa que puedes leer fácilmente el valor del miembro. Trabajar con la instancia campaign del ejemplo anterior en un repl de Python:
>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3
A veces, es útil conocer el nombre del campo que corresponde al valor de enum, como se muestra arriba. Puedes acceder a esta información con el atributo name:
>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>
La interacción con los enums es diferente según si tiene la
use_proto_plus
configuración establecida en true o false. Para obtener detalles sobre las dos interfaces, consulta
la documentación de los mensajes de protobuf.
Control de versiones
Se mantienen varias versiones de la API al mismo tiempo. Si bien v25 puede ser la versión más reciente, se puede acceder a las versiones anteriores hasta que se retiren. La biblioteca incluirá clases de mensajes proto independientes que corresponden a cada versión activa de la API. Para acceder a una clase de mensaje para una versión específica, proporciona el parámetro de palabra clave version cuando inicialices un cliente para que siempre muestre una instancia de esa versión:
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v25/")
# The Campaign instance will be from the v25 version of the API.
campaign = client.get_type("Campaign")
También es posible especificar la versión cuando se llaman a los métodos get_service y get_type. Si lo haces, se anulará la versión proporcionada cuando se inicialice el cliente:
client = GoogleAdsService.load_from_storage()
# This will load the v25 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v25")
client = GoogleAdsService.load_from_storage(version="v25")
# This will load the v23 version of a Campaign.
campaign = client.get_type("Campaign", version="v23")
Si no se proporciona ningún parámetro de palabra clave version, la biblioteca usará de forma predeterminada la versión más reciente. Puedes encontrar una lista actualizada de las versiones más recientes y otras disponibles
en la sección de navegación de la izquierda de la
documentación de referencia de la API.