Il recupero dei riferimenti a tutte le varie classi proto necessarie per utilizzare l'API in Python può essere prolisso e richiede una comprensione intrinseca dell'API o un cambio di contesto frequente per fare riferimento ai proto o alla documentazione.
I metodi get_service
e get_type
del client
Questi due metodi getter consentono di recuperare qualsiasi servizio o oggetto di tipo nell'API. Il metodo get_service
viene utilizzato per recuperare i client di servizio. get_type
viene utilizzato per qualsiasi altro oggetto. Le classi client di servizio sono definite nel codice
nel percorso della versione google/ads/googleads/v*/services/services/
e tutti
i tipi sono definiti nelle varie categorie di oggetti,
google/ads/googleads/v*/common|enums|errors|resources|services/types/
.
Tutto il codice sotto la directory della versione viene generato, quindi è una best practice utilizzare questi metodi anziché importare direttamente gli oggetti, nel caso in cui la struttura della codebase cambi.
Ecco un esempio di come utilizzare il metodo get_service
per recuperare un'istanza
del client 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 v20 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v20")
googleads_service = client.get_service("GoogleAdsService")
Ecco un esempio di come utilizzare il metodo get_type
per recuperare un'istanza di
Campaign
.
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v20")
campaign = client.get_type("Campaign")
Enum
Sebbene tu possa utilizzare il metodo get_type
per recuperare gli enum, ogni istanza GoogleAdsClient
ha anche un attributo enums
che carica dinamicamente gli enum utilizzando lo stesso meccanismo del metodo get_type
. Questa interfaccia
è pensata per essere più semplice e facile da leggere rispetto all'utilizzo di get_type
:
client = GoogleAdsClient.load_from_storage(version=v20)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
I campi degli oggetti Proto che sono enumerazioni sono rappresentati in Python dal tipo enum nativo. Ciò significa che puoi leggere facilmente il valore del membro. Lavora con l'istanza campaign
dell'esempio precedente in un repl Python:
>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3
A volte è utile conoscere il nome del campo che corrisponde al valore
enum come mostrato sopra. Puoi accedere a queste informazioni utilizzando l'attributo name
:
>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>
L'interazione con gli enum varia a seconda che la configurazione di
use_proto_plus
sia impostata su true
o false
. Per informazioni dettagliate sulle due interfacce, consulta la
documentazione sui messaggi protobuf.
Controllo delle versioni
Vengono mantenute più versioni dell'API contemporaneamente. Anche se
v20
potrebbe essere l'ultima versione, le versioni precedenti sono ancora
accessibili fino al loro ritiro. La libreria includerà classi di messaggi proto separate che corrispondono a ogni versione API attiva. Per accedere a una classe di messaggi
per una versione specifica, fornisci il parametro della parola chiave version
durante
l'inizializzazione di un client in modo che restituisca sempre l'istanza della versione
specifica:
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v20/")
# The Campaign instance will be from the v20 version of the API.
campaign = client.get_type("Campaign")
È anche possibile specificare la versione quando si chiamano i metodi get_service
e
get_type
. In questo modo, la versione fornita durante
l'inizializzazione del client viene sostituita:
client = GoogleAdsService.load_from_storage()
# This will load the v20 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v20")
client = GoogleAdsService.load_from_storage(version="v20")
# This will load the v18 version of a Campaign.
campaign = client.get_type("Campaign", version="v18")
Se non viene fornito alcun parametro della parola chiave version
, la libreria utilizzerà per impostazione predefinita
l'ultima versione. Un elenco aggiornato delle versioni più recenti e di altre versioni disponibili
è disponibile nella sezione di navigazione a sinistra della
documentazione Riferimento API.