Pengambil Layanan dan Jenis

Pengambilan referensi ke berbagai class proto yang diperlukan untuk menggunakan API di Python dapat menjadi panjang dan mengharuskan Anda memiliki pemahaman intrinsik tentang API atau sering beralih konteks untuk mereferensikan proto atau dokumentasi.

Metode get_service dan get_type klien

Kedua metode pengambil ini memungkinkan Anda mengambil layanan atau jenis objek di API. Metode get_service digunakan untuk mengambil klien layanan. get_type digunakan untuk objek lainnya. Class klien layanan ditentukan dalam kode di bawah jalur versi google/ads/googleads/v*/services/services/ dan semua jenis ditentukan dalam berbagai kategori objek, google/ads/googleads/v*/common|enums|errors|resources|services/types/. Semua kode di bawah direktori versi telah dibuat, jadi praktik terbaiknya adalah menggunakan metode ini, bukan mengimpor objek secara langsung, jika struktur codebase berubah.

Berikut contoh cara menggunakan metode get_service untuk mengambil instance klien 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")

Berikut adalah contoh cara menggunakan metode get_type untuk mengambil instance Campaign.

from google.ads.googleads.client import GoogleAdsClient

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

Enum

Meskipun Anda dapat menggunakan metode get_type untuk mengambil Enum, setiap instance GoogleAdsClient juga memiliki atribut enums yang secara dinamis memuat Enum menggunakan mekanisme yang sama seperti metode get_type. Antarmuka ini dimaksudkan agar lebih sederhana dan mudah dibaca daripada menggunakan get_type:

client = GoogleAdsClient.load_from_storage(version=v17)

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

Kolom objek proto yang berupa enum direpresentasikan di Python oleh jenis enum native. Itu berarti Anda dapat dengan mudah membaca nilai anggota. Menggunakan instance campaign dari contoh sebelumnya dalam replika Python:

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

Terkadang berguna untuk mengetahui nama kolom yang sesuai dengan nilai enum seperti yang ditunjukkan di atas. Anda dapat mengakses informasi ini menggunakan atribut name:

>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>

Berinteraksi dengan enum berbeda-beda, bergantung pada apakah Anda telah menetapkan konfigurasi use_proto_plus ke true atau false. Untuk mengetahui detail tentang kedua antarmuka tersebut, baca dokumentasi pesan protobuf.

Pembuatan versi

Beberapa versi API dikelola secara bersamaan. Meskipun v17 mungkin merupakan versi terbaru, versi sebelumnya masih dapat diakses hingga dihentikan. Library ini akan menyertakan class pesan proto terpisah yang sesuai dengan setiap versi API yang aktif. Agar dapat mengakses class pesan untuk versi tertentu, sediakan parameter kata kunci version saat melakukan inisialisasi klien agar selalu menampilkan instance dari versi tersebut:

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

Anda juga dapat menentukan versi saat memanggil metode get_service dan get_type. Tindakan ini akan mengganti versi yang disediakan saat melakukan inisialisasi klien:

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

Jika parameter kata kunci version tidak disediakan, library akan secara default menggunakan versi terbaru. Daftar terbaru versi terbaru dan versi lain yang tersedia dapat ditemukan di bagian navigasi sebelah kiri dalam dokumentasi Referensi API.