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