Service e Type Getter

Il recupero dei riferimenti a tutte le varie classi di proto richiesti per utilizzare l'API in Python può essere dettagliato e richiede una comprensione intrinseca dell'API o spesso l'uso di switch di 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 dei 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/. Poiché viene generato tutto il codice sotto la directory della versione, la best practice prevede l'uso di questi metodi anziché importare direttamente gli oggetti, in caso di modifica della 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 v16 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v16")
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="v16")
campaign = client.get_type("Campaign")

Enum

Sebbene sia possibile utilizzare il metodo get_type per recuperare le enum, ogni istanza GoogleAdsClient dispone anche di un attributo enums che carica dinamicamente le enum utilizzando lo stesso meccanismo del metodo get_type. Questa interfaccia è progettata in modo da essere più semplice e più facile da leggere rispetto all'uso di get_type:

client = GoogleAdsClient.load_from_storage(version=v16)

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

I campi oggetto Proto che sono enum sono rappresentati in Python dal tipo enum nativo. Ciò significa che puoi leggere facilmente il valore del membro. Lavorando con l'istanza campaign dell'esempio precedente in un repository Python:

>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3

A volte è utile conoscere il nome del campo corrispondente al valore enum 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 maggiori dettagli sulle due interfacce, consulta la documentazione relativa ai messaggi protobuf.

Controllo delle versioni

Più versioni dell'API vengono gestite contemporaneamente. Anche se v16 potrebbe essere la versione più recente, le versioni precedenti sono comunque accessibili fino al ritiro. La libreria includerà classi di proto messaggi separate che corrispondono a ogni versione attiva dell'API. 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 di quella determinata versione:

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

È anche possibile specificare la versione quando si chiama 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 v16 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v16")

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

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 Riferimento API.