Configurazione

Esistono diversi modi per configurare il client.

Configurazione mediante file YAML

Puoi specificare un file YAML da utilizzare durante l'inizializzazione del client che contiene le informazioni di autenticazione necessarie per effettuare le richieste. È possibile accedere a questo file quando un client viene inizializzato utilizzando il metodo load_from_storage. Il modo più semplice per generare questo file è copiare l'esempio di google-ads.yaml dal repository GitHub e modificarlo per includere le tue credenziali, inclusi il token sviluppatore, il token di aggiornamento, l'ID client e il client secret.

Per specificare una posizione in cui si trova il file google-ads.yaml, puoi passare il percorso come stringa al metodo quando lo chiami:

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

Puoi anche specificare il percorso definendo una variabile di ambiente specifica:

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

Se vengono forniti entrambi i valori (viene trasmesso un percorso al metodo e è presente la variabile di ambiente riportata sopra), la libreria darà la priorità al percorso trasmesso al metodo.

Se non specifichi un percorso, la libreria cercherà il file nella directory $HOME:

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

Configurazione utilizzando le variabili di ambiente

Puoi archiviare tutte le configurazioni client come variabili di ambiente, che verranno lette quando si utilizza il metodo load_from_env del client. Le variabili di ambiente devono avere lo stesso nome di quelli definiti nel file google-ads.yaml, ma devono essere tutte in maiuscolo e precedute dal prefisso GOOGLE_ADS_. Ad esempio, client_id deve essere archiviato come GOOGLE_ADS_CLIENT_ID.

Le variabili di ambiente sono comunemente definite in un file di configurazione bash, ad esempio un file .bashrc o .bash_profile che si trova nella directory $HOME. Possono anche essere definite utilizzando la riga di comando. Tieni presente che queste istruzioni presuppongono che tu utilizzi bash. Se utilizzi una shell diversa, potresti dover consultare la documentazione su come impostare le variabili di ambiente nella shell in uso.

Ecco alcuni passaggi di base per definire una variabile di ambiente utilizzando un file .bashrc mediante un terminale:

# 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

Le variabili di ambiente possono anche essere impostate nell'istanza del terminale direttamente dalla riga di comando:

$ export GOOGLE_ADS_CLIENT_ID=1234567890
$ echo $GOOGLE_ADS_CLIENT_ID
1234567890

Il metodo load_from_env carica i dati di configurazione dall'attributo environ sul modulo os integrato di Python. Ad esempio: os.environ["GOOGLE_ADS_CLIENT_ID"]

Ecco un esempio di come inizializzare un'istanza client con una configurazione basata sulle variabili di ambiente:

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

Per configurare logging tramite le variabili di ambiente, il valore di configurazione deve essere un oggetto JSON corrispondente alla struttura delle chiavi YAML nel file di configurazione di google-ads.yaml di esempio.

Ecco un esempio di come può essere impostato utilizzando un file .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"
    }
  }
}'

Configurazione mediante stringa YAML

Se hai letto un file YAML in memoria, puoi fornirlo direttamente al client al momento dell'inizializzazione. Per farlo, utilizza il metodo 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)

Configurazione con dict

Puoi passare dict direttamente al metodo load_from_dict. Ad esempio:

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)

Campi di configurazione

La configurazione della libreria client supporta i seguenti campi.

Campi generali (questi nomi sono gli stessi a prescindere dall'utilizzo di un file YAML o di una configurazione di ditta):

Campi generali come variabili di ambiente:

  • 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 (in precedenza GOOGLE_ADS_PATH_TO_PRIVATE_KEY_FILE)
  • GOOGLE_ADS_IMPERSONATED_EMAIL (in precedenza GOOGLE_ADS_DELEGATE_ACCOUNT)
  • GOOGLE_ADS_LOGGING
  • GOOGLE_ADS_HTTP_PROXY
  • GOOGLE_ADS_USE_PROTO_PLUS

I campi di Logging, che sono campi sotto il campo di configurazione logging, vengono derivati direttamente dal modulo integrato logging.config perché la libreria passerà tutti i campi nello spazio dei nomi logging direttamente al metodo logging.config.dictConfig. Per informazioni dettagliate, consulta la guida alla registrazione.

  • version: un valore intero che rappresenta una versione dello schema.
  • disable_existing_loggers: indica se i logger configurati altrove nell'applicazione devono essere disabilitati.
  • formatters: dizionari che definiscono i diversi tipi di formattatori.
  • handlers: dizionari che definiscono diversi gestori, che controllano dove vengono scritti i log e quali formattatori devono essere utilizzati.
  • loggers: dizionari che definiscono diversi tipi di logger, che includono un gestore e un livello log.