การตั้งค่าออบเจ็กต์ข้อความที่ว่างเปล่าเป็นช่อง

ใน Google Ads API ช่องข้อความบางช่องหมายถึงออบเจ็กต์ข้อความว่างเปล่า เช่น campaign.manual_cpm หรืออาจมีเฉพาะช่องที่ไม่บังคับซึ่งไม่จําเป็นต้องตั้งค่า เช่น campaign.manual_cpc การตั้งค่าช่องเหล่านี้เป็นสิ่งสําคัญในการบอก API ว่าควรใช้กลยุทธ์การเสนอราคาใดสําหรับแคมเปญนั้นๆ แต่ข้อความจะไม่พร้อมใช้งานเมื่อข้อความว่างเปล่า

เมื่ออัปเดตช่อง campaign.name ซึ่งเป็นสตริง เราจะตั้งค่าช่องโดยการอัปเดตโดยตรงเหมือนกับว่าเป็นแอตทริบิวต์ออบเจ็กต์ Python ปกติ

campaign.name = "Test campaign value"

campaign.manual_cpc เป็นช่องที่ซ้อนกันอยู่ ซึ่งหมายความว่ามี ข้อความ protobuf อื่นและไม่ใช่ประเภทพื้นฐาน เช่น สตริง คุณสามารถอัปเดตช่อง โดยตรงได้ด้วยเช่นกัน

campaign.manual_cpc.enhanced_cpc_enabled = True

ซึ่งจะบอกให้ API ทราบว่าแคมเปญนี้มีกลยุทธ์การเสนอราคาเป็นmanual_cpcที่เปิดใช้ CPC ที่ปรับปรุงแล้ว

แต่หากคุณต้องการใช้ manual_cpm ข้อใดว่างเปล่า หรือ manual_cpc โดยไม่เปิดใช้ CPC ที่ปรับปรุงแล้ว ในการทําเช่นนี้ คุณจะต้องคัดลอกอินสแตนซ์ที่ว่างเปล่าของชั้นเรียน ไปยังแคมเปญ เช่น

client = GoogleAdsClient.load_from_storage()

empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)

วิธีการระบุ manual_cpm สําหรับออบเจ็กต์ campaign:

name {
  value: "Test campaign value"
}
manual_cpm {
}

ตั้งค่าช่อง manual_cpm แล้ว แต่ทุกช่องไม่มีค่า เมื่อส่งคําขอไปยัง API ที่ใช้รูปแบบนี้ คุณจะตรวจสอบได้ว่าคุณกําลังตั้งค่าออบเจ็กต์ข้อความว่างเปล่าอย่างถูกต้องหรือไม่โดยเปิดใช้การบันทึกและตรวจสอบเพย์โหลดคําขอ

สุดท้าย คุณจะต้องเพิ่มช่องนี้ลงในออบเจ็กต์คําขอ update_mask ด้วยตนเอง ตัวช่วยเหลือของมาสก์ดังกล่าวจะไม่มีกลไกในการระบุความแตกต่างระหว่างช่องที่ตั้งค่าเป็นออบเจ็กต์ที่ว่างเปล่ากับช่องที่ยังไม่ได้ตั้งค่า

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