Di Google Ads API, beberapa kolom pesan ditentukan sebagai objek pesan kosong, seperti campaign.manual_cpm
, atau hanya dapat memiliki kolom opsional yang tidak perlu ditetapkan, misalnya campaign.manual_cpc
. Menetapkan kolom ini
penting untuk memberi tahu API strategi bidding mana yang akan digunakan untuk
Kampanye tertentu, tetapi tidak intuitif saat pesan kosong.
Saat memperbarui kolom campaign.name
, yang merupakan string, kita menetapkan kolom
dengan memperbaruinya secara langsung seolah-olah itu adalah atribut objek Python normal:
campaign.name = "Test campaign value"
campaign.manual_cpc
adalah kolom bertingkat, yang berarti kolom tersebut berisi pesan protobuf lain dan bukan jenis primitif, seperti string. Anda
juga dapat memperbarui kolomnya secara langsung:
campaign.manual_cpc.enhanced_cpc_enabled = True
Tindakan ini akan memberi tahu API bahwa Kampanye ini memiliki strategi bidding manual_cpc
dengan Enhanced CPC diaktifkan.
Namun, bagaimana jika Anda ingin menggunakan manual_cpm
? Atau manual_cpc
tanpa mengaktifkan enhanced cpc? Untuk melakukannya, Anda harus menyalin instance
yang kosong dari kelas ke kampanye, misalnya:
client = GoogleAdsClient.load_from_storage()
empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)
Perhatikan cara manual_cpm
ditentukan untuk objek campaign
:
name {
value: "Test campaign value"
}
manual_cpm {
}
Kolom manual_cpm
ditetapkan, tetapi tidak ada kolomnya yang memiliki nilai. Saat mengirim permintaan ke API yang menggunakan pola ini, Anda dapat memverifikasi bahwa Anda menetapkan objek pesan yang kosong secara tepat dengan mengaktifkan logging dan memeriksa payload permintaan.
Terakhir, Anda harus menambahkan kolom ini secara manual ke update_mask
objek permintaan. Helper mask kolom tidak memiliki mekanisme untuk menentukan
perbedaan antara kolom yang telah ditetapkan secara eksplisit ke objek kosong dan
kolom yang belum ditetapkan.
from google.api_core.protobuf_helpers import field_mask
campaign_operation.create = campaign
campaign_operation.update_mask = field_mask(None, campaign)
# Here we manually add the "manual_cpm" field
campaign_operation.update_mask.append("manual_cpm")