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

ช่องข้อความบางช่องใน 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")