Getters de servicio y tipo

Recuperar referencias a todas las clases de 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.

Los métodos get_service y get_type del cliente

Estos dos métodos get 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/ y todos los tipos se definen en las distintas categorías de objetos google/ads/googleads/v*/common|enums|errors|resources|services/types/. Se genera todo el código debajo del directorio de la versión, por lo que se recomienda usar estos métodos en lugar de importar los objetos directamente, en caso de que cambie la estructura de la base de código.

En el siguiente ejemplo, se muestra cómo usar el método get_service para recuperar una instancia del cliente GoogleAdsService (o un GoogleAdsServiceAsyncClient asíncrono en google-ads v28.4.0 y versiones posteriores pasando is_async=True):

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 v26 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v26")
googleads_service = client.get_service("GoogleAdsService")

# Supported in google-ads v28.4.0 and later: retrieve an async service client.
googleads_async_service = client.get_service("GoogleAdsService", is_async=True)

En el siguiente ejemplo, se muestra cómo usar el método get_type para recuperar una instancia de Campaign:

from google.ads.googleads.client import GoogleAdsClient

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

Enums

Si bien puedes usar el método get_type para recuperar enumeraciones, cada instancia de GoogleAdsClient también tiene un atributo enums que carga de forma dinámica las enumeraciones con el mismo mecanismo que el método get_type. Esta interfaz es más simple y fácil de leer que usar get_type:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v26")

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

Los campos de objetos proto que son enumeraciones se representan en Python con el tipo enum integrado. Esto significa que puedes leer el valor del miembro directamente. Trabaja 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 la enumeración. 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 las enumeraciones varía según si tienes el parámetro de configuración use_proto_plus establecido en true o false. Para obtener detalles sobre las dos interfaces, consulta la documentación de mensajes de protobuf.

Control de versiones

Se mantienen varias versiones de la API al mismo tiempo. Si bien v26 es la versión más reciente, las versiones anteriores siguen disponibles hasta que se dejen de usar. La biblioteca incluye clases de mensajes de proto independientes que corresponden a cada versión activa de la API. Para acceder a una clase de mensaje de una versión específica, proporciona el parámetro de palabra clave version cuando inicialices un cliente para que siempre devuelva una instancia de esa versión determinada:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v26")
# The Campaign instance will be from the v26 version of the API.
campaign = client.get_type("Campaign")

Si no especificas un version cuando inicializas el cliente, puedes especificar la versión por llamada cuando llamas a los métodos get_service y get_type (ten en cuenta que, si se establece version cuando se inicializa GoogleAdsClient, se anula cualquier argumento version que se pase a get_service o get_type):

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage()
# This loads the v26 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v26"
)

# This loads a specific supported API version (such as v23) of a Campaign.
campaign = client.get_type("Campaign", version="v23")

Si no se proporciona ningún parámetro de palabra clave version, la biblioteca usa de forma predeterminada la versión de la API más alta que admita el paquete google-ads instalado ("v26" en la versión más reciente). Ten en cuenta que se accede a las versiones secundarias de la API (como v25.1) con su cadena de versión principal (version="v25"). Puedes encontrar una lista actualizada de las versiones más recientes y otras disponibles en la sección de navegación izquierda de la documentación de la referencia de la API.