ב-Google Ads API, חלק מהשדות של ההודעות מוגדרים כאובייקטים ריקים של הודעות,
כמו campaign.manual_cpm
,
או שהם כוללים רק שדות אופציונליים, שלא צריך להגדיר. לדוגמה
campaign.manual_cpc
הגדרת האפשרויות האלה
חשוב לציין ל-API באיזו שיטת בידינג להשתמש
קמפיין, אבל הוא לא אינטואיטיבי כשההודעות ריקות.
כשמעדכנים את השדה campaign.name
, שהוא מחרוזת, אנחנו מגדירים אותו
על ידי עדכון ישיר, כאילו היה מאפיין אובייקט רגיל של Python:
campaign.name = "Test campaign value"
campaign.manual_cpc
הוא שדה מקונן, כלומר הוא מכיל
הודעת פרו-טופו אחרת ולא טיפוס פרימיטיבי, כמו מחרוזת. שלך
יכול לעדכן את השדות שלו ישירות:
campaign.manual_cpc.enhanced_cpc_enabled = True
הפעולה הזו תיידע את ה-API ששיטת הבידינג שמוגדרת בקמפיין הזה היא manual_cpc
עם אופטימיזציית עלות לקליק מופעלת.
אבל מה אם רוצים להשתמש בשדה manual_cpm
, שהוא ריק? או manual_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 שמשתמש בדפוס הזה, תוכלו לוודא שאתם מגדירים
של הודעה ריקה בצורה נכונה, על ידי הפעלת רישום ביומן ובדיקת
מטען ייעודי (payload) של בקשה.
לסיום, צריך להוסיף את השדה הזה באופן ידני
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")