Menetapkan Objek Pesan Kosong sebagai Kolom

Di Google Ads API, beberapa kolom pesan didefinisikan sebagai objek pesan kosong, seperti campaign.manual_cpm, atau kolom tersebut mungkin hanya memiliki kolom opsional yang tidak perlu ditetapkan, misalnya campaign.manual_cpc. Menetapkan kolom ini penting untuk memberi tahu API strategi bidding yang akan digunakan untuk Kampanye tertentu, tetapi hal ini tidak intuitif jika pesan kosong.

Saat memperbarui kolom campaign.name, yang merupakan string, kami menetapkan kolom tersebut dengan memperbaruinya secara langsung seolah-olah itu adalah atribut objek Python normal:

campaign.name = "Test campaign value"

campaign.manual_cpc adalah kolom bertingkat, artinya berisi pesan protobuf lain dan bukan jenis primitif, seperti string. Anda juga dapat memperbarui kolomnya secara langsung:

campaign.manual_cpc.enhanced_cpc_enabled = True

Hal ini akan memberi tahu API bahwa Kampanye ini memiliki strategi bidding manual_cpc dengan Enhanced CPC aktif.

Namun, bagaimana jika Anda ingin menggunakan manual_cpm, yang mana kosong? Atau manual_cpc tanpa mengaktifkan Enhanced CPC? Untuk melakukannya, Anda harus menyalin instance class terpisah yang kosong 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 telah menetapkan objek pesan kosong secara benar 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")