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