Configuración

Existen varias formas de configurar el cliente.

Configuración con un archivo YAML

Puedes especificar un archivo YAML para usar cuando inicialices el cliente que contiene la información de autenticación necesaria a fin de realizar solicitudes. Se accede a este archivo cuando se inicializa un cliente con el método load_from_storage. La manera más fácil de generar este archivo es copiar el ejemplo de google-ads.yaml del repositorio de GitHub y modificarlo para incluir tus credenciales, incluidos el token de desarrollador, el token de actualización, el ID de cliente y el secreto de cliente.

Para especificar la ubicación del archivo google-ads.yaml, puedes pasar la ruta de acceso como una string al método cuando lo llames:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")

También puedes especificar la ruta de acceso definiendo una variable de entorno específica:

import os

os.environ["GOOGLE_ADS_CONFIGURATION_FILE_PATH"] = "path/to/google-ads.yaml"
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

Si se proporcionan ambos valores (se pasa una ruta de acceso al método y la variable de entorno anterior), la biblioteca priorizará la ruta de acceso que se pasó al método.

Si no proporcionas una ruta de acceso, la biblioteca buscará el archivo en el directorio $HOME:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

Configuración con variables de entorno

Puedes almacenar toda la configuración de tu cliente como variables de entorno, que se leerán cuando se use el método load_from_env del cliente. Las variables de entorno deben tener el mismo nombre que las que se definen en el archivo google-ads.yaml, pero deben estar todas en mayúsculas y tener el prefijo GOOGLE_ADS_ como prefijo. Por ejemplo, client_id debe almacenarse como GOOGLE_ADS_CLIENT_ID.

Por lo general, las variables de entorno se definen en un archivo de configuración bash, como un archivo .bashrc o .bash_profile ubicado en el directorio $HOME. También se pueden definir mediante la línea de comandos. Ten en cuenta que, en estas instrucciones, se supone que usas bash. Si usas un shell diferente, es posible que debas consultar la documentación sobre cómo configurar variables de entorno en el shell que utilizas.

Estos son algunos pasos básicos para definir una variable de entorno con un archivo .bashrc mediante una terminal:

# Append the line "export GOOGLE_ADS_CLIENT_ID=1234567890" to
# the bottom of your .bashrc file.
$ echo "export GOOGLE_ADS_CLIENT_ID=1234567890" >> ~/.bashrc
# Update your bash environment to use the most recently updated
# version of your .bashrc file.
$ src ~/.bashrc

Las variables de entorno también se pueden configurar en tu instancia de terminal directamente desde la línea de comandos:

$ export GOOGLE_ADS_CLIENT_ID=1234567890
$ echo $GOOGLE_ADS_CLIENT_ID
1234567890

El método load_from_env carga datos de configuración del atributo environ en el módulo os integrado de Python. Por ejemplo: os.environ["GOOGLE_ADS_CLIENT_ID"]

A continuación, se muestra un ejemplo de cómo inicializar una instancia de cliente con la configuración de las variables de entorno:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_env()

Para configurar logging a través de variables de entorno, el valor de configuración debe ser un objeto JSON que coincida con la estructura de las claves YAML en el archivo de configuración google-ads.yaml de muestra.

A continuación, se muestra un ejemplo de cómo se puede establecer mediante un archivo .bashrc:

export GOOGLE_ADS_LOGGING='{
  "version": 1,
  "disable_existing_loggers": false,
  "formatters": {
    "default_fmt": {
      "format": "[%(asctime)s - %(levelname)s] %(message).5000s",
      "datefmt": "%Y-%m-%d %H:%M:%S"
    }
  },
  "handlers": {
    "default_handler": {
      "class": "logging.StreamHandler",
      "formatter": "default_fmt"
    }
  },
  "loggers": {
    "": {
      "handlers": ["default_handler"],
      "level": "INFO"
    }
  }
}'

Configuración con una string YAML

Si leíste un archivo YAML en la memoria, puedes proporcionarlo directamente al cliente en el momento de la inicialización. Para ello, solo debes usar el método load_from_string.

from google.ads.googleads.client import GoogleAdsClient

with open("/path/to/yaml", "rb") as handle:
    yaml = handle.read()

client = GoogleAdsClient.load_from_string(yaml)

Configuración mediante un objeto dict

Puedes pasar un dict directamente al método load_from_dict. Por ejemplo:

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "developer_token": "abcdef123456",
    "refresh_token": "1//0abcdefghijklABCDEF",
    "client_id": "123456-abcdef.apps.googleusercontent.com",
    "client_secret": "aBcDeFgHiJkL"}

client = GoogleAdsClient.load_from_dict(credentials)

Campos de configuración

La configuración de la biblioteca cliente admite los siguientes campos.

Campos generales (estos nombres son los mismos si usas una configuración YAML o dict):

  • refresh_token: Es el token de actualización de OAuth.
  • client_id: Es tu ID de cliente de OAuth.
  • client_secret: El secreto de cliente de OAuth
  • developer_token: El token de desarrollador para acceder a la API.
  • login_customer_id: Consulta la documentación de acceso-cliente-id.
  • linked_customer_id: Consulta la documentación de linked-customer-id.
  • json_key_file_path (anteriormente path_to_private_key_file): Es una ruta de acceso a un archivo de claves privadas locales. Esto se usa para la autenticación mediante una cuenta de servicio. Consulta la documentación de la cuenta de servicio de OAuth2.
  • impersonated_email (anteriormente delegate_account): Es un correo electrónico de cuenta que se usa como delegado. Esto se usa para la autenticación mediante una cuenta de servicio. Consulta la documentación de la cuenta de servicio de OAuth2.
  • logging: Configuración de registro Los campos de registro se describen a continuación.
  • http_proxy: Consulta la documentación del proxy.
  • use_proto_plus: Indica si se deben usar o no los mensajes proto-plus. Consulta la documentación de Mensajes de protobuf.

Campos generales como variables de entorno:

  • GOOGLE_ADS_CONFIGURATION_FILE_PATH
  • GOOGLE_ADS_REFRESH_TOKEN
  • GOOGLE_ADS_CLIENT_ID
  • GOOGLE_ADS_CLIENT_SECRET
  • GOOGLE_ADS_DEVELOPER_TOKEN
  • GOOGLE_ADS_LOGIN_CUSTOMER_ID
  • GOOGLE_ADS_LINKED_CUSTOMER_ID
  • GOOGLE_ADS_JSON_KEY_FILE_PATH (anteriormente GOOGLE_ADS_PATH_TO_PRIVATE_KEY_FILE)
  • GOOGLE_ADS_IMPERSONATED_EMAIL (anteriormente GOOGLE_ADS_DELEGATE_ACCOUNT)
  • GOOGLE_ADS_LOGGING
  • GOOGLE_ADS_HTTP_PROXY
  • GOOGLE_ADS_USE_PROTO_PLUS

Los campos de registro, que son campos debajo del campo de configuración logging, se derivan directamente del módulo integrado logging.config porque la biblioteca pasará todos los campos del espacio de nombres logging directamente al método logging.config.dictConfig. Consulta la guía de registro para obtener detalles completos.

  • version: Es un valor entero que representa una versión del esquema.
  • disable_existing_loggers: Especifica si los registradores configurados en otra parte de la aplicación deben inhabilitarse.
  • formatters: Diccionarios que definen diferentes tipos de formateadores.
  • handlers: Los diccionarios que definen diferentes controladores, que controlan dónde se escriben los registros y a qué formateadores se debe usar
  • loggers: Son diccionarios que definen diferentes tipos de registradores, que incluyen un controlador y un nivel de registro.