Service e Type Getter

Il recupero dei riferimenti a tutte le varie classi proto necessarie per utilizzare l'API in Python può essere verboso e richiede una conoscenza intrinseca dell'API o il 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 ti 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 di client di servizio sono definite nel codice sotto il 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, pertanto è buona prassi utilizzare questi metodi anziché importare direttamente gli oggetti, nel caso in cui la struttura della base di codice 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 v18 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v18")
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="v18")
campaign = client.get_type("Campaign")

Enum

Sebbene sia possibile 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 è progettata per essere più semplice e di più facile lettura rispetto all'utilizzo di get_type:

client = GoogleAdsClient.load_from_storage(version=v18)

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

I campi dell'oggetto proto che sono enum sono rappresentati in Python dal tipo enum nativo. Ciò significa che puoi leggere facilmente il valore dell'elemento. Lavorare 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 dell'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 è diversa a seconda che la configurazione di use_proto_plus sia impostata su true o false. Per informazioni dettagliate sulle due interfacce, consulta la documentazione dei messaggi protobuf.

Controllo delle versioni

Vengono mantenute contemporaneamente più versioni dell'API. Anche se v18 potrebbe essere la versione più recente, le versioni precedenti sono ancora accessibili fino al loro ritiro. La libreria includerà classi di messaggi proto separate corrispondenti a ogni versione dell'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 specificata:

client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v18/")
# The Campaign instance will be from the v18 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 verrà sostituita la versione fornita durante l'inizializzazione del client:

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

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

Se non viene fornito alcun parametro di parola chiave version, per impostazione predefinita la libreria utilizzerà 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 del riferimento API.