في Google Ads API، يتم تعريف بعض حقول الرسائل على أنّها كائنات رسائل فارغة، مثل campaign.manual_cpm
، أو قد تحتوي فقط على حقول اختيارية لا يلزم ضبطها، مثل campaign.manual_cpc
.
من المهم ضبط هذه الحقول لإخبار واجهة برمجة التطبيقات باستراتيجية عروض الأسعار التي يجب استخدامها للحملة المحدّدة، ولكن لا يكون ذلك واضحًا عندما تكون الرسائل فارغة.
عند تعديل الحقل campaign.name
، وهو سلسلة، نضبط الحقل
من خلال تعديله مباشرةً كما لو كان سمة عادية لكائن Python:
campaign.name = "Test campaign value"
campaign.manual_cpc
هو حقل مدمج، ما يعني أنّه يحتوي على رسالة protobuf أخرى وليس نوعًا أساسيًا، مثل سلسلة. يمكنك أيضًا تعديل حقوله مباشرةً باتّباع الخطوات التالية:
campaign.manual_cpc.enhanced_cpc_enabled = True
سيُعلم ذلك واجهة برمجة التطبيقات بأنّ هذه الحملة تستخدم استراتيجية عروض أسعار 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
، ولكن لا تحتوي أي من حقوله على قيم. عند إرسال طلب إلى واجهة برمجة التطبيقات التي تستخدم هذا النمط، يمكنك التأكّد من ضبط عنصر الرسالة الفارغة بشكل صحيح من خلال تفعيل التسجيل وفحص حمولة الطلب.
أخيرًا، عليك إضافة هذا الحقل يدويًا إلى 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")