Service e Type Getter

Il recupero dei riferimenti a tutte le varie classi di proto richieste per utilizzare l'API in Python può essere dettagliato e richiede una conoscenza intrinseca dell'API o spesso la modifica del contesto 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 oggetto di tipo o servizio nell'API. Il metodo get_service viene utilizzato per recuperare i client di servizio. get_type viene utilizzato per qualsiasi altro oggetto. Le classi del 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/. Viene generato tutto il codice sotto la directory della versione, quindi la best practice prevede di utilizzare questi metodi anziché importare direttamente gli oggetti in caso di modifiche alla struttura del codebase.

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

Ecco un esempio di come utilizzare il metodo get_type per recuperare un'istanza Campaign.

from google.ads.googleads.client import GoogleAdsClient

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

Enum

Sebbene tu possa utilizzare il metodo get_type per recuperare le enum, ogni istanza GoogleAdsClient ha anche un attributo enums che carica dinamicamente le enum utilizzando lo stesso meccanismo del metodo get_type. Questa interfaccia è pensata per essere più semplice e più facile da leggere rispetto all'utilizzo di get_type:

client = GoogleAdsClient.load_from_storage(version=v17)

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

I campi degli oggetti protocollo che sono enum sono rappresentati in Python dal tipo enum nativo. Ciò significa che puoi leggere facilmente il valore del membro. Utilizzo dell'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 le enum è diversa a seconda che la configurazione di use_proto_plus sia impostata su true o false. Per i dettagli sulle due interfacce, consulta la documentazione sui messaggi protobuf.

Controllo delle versioni

Più versioni dell'API vengono mantenute contemporaneamente. Anche se v17 potrebbe essere la versione più recente, le versioni precedenti sono comunque accessibili fino al ritiro. La libreria includerà classi proto-message separate che corrispondono a ogni versione attiva dell'API. Per accedere a una classe di messaggi per una versione specifica, fornisci il parametro di parola chiave version durante l'inizializzazione di un client in modo che restituisca sempre l'istanza da quella determinata versione:

client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v17/")
# The Campaign instance will be from the v17 version of the API.
campaign = client.get_type("Campaign")

È anche possibile specificare la versione quando chiami i metodi get_service e get_type. Questa operazione sostituirà la versione fornita durante l'inizializzazione del client:

client = GoogleAdsService.load_from_storage()
# This will load the v17 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v17")

client = GoogleAdsService.load_from_storage(version="v17")
# This will load the v15 version of a Campaign.
campaign = client.get_type("Campaign", version="v15")

Se non viene fornito alcun parametro parola chiave version, la libreria utilizzerà per impostazione predefinita la versione più recente. Un elenco aggiornato delle versioni più recenti e di altre versioni disponibili è disponibile nella sezione di navigazione a sinistra della documentazione di riferimento API.