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