ضبط كائنات الرسائل الفارغة كحقول

في Google Ads API، يتم تحديد بعض حقول الرسائل ككائنات رسائل فارغة، مثل campaign.manual_cpm، أو قد تحتوي فقط على حقول اختيارية لا تحتاج إلى ضبطها، مثل campaign.manual_cpc. من المهم ضبط هذه الحقول لإعلام واجهة برمجة التطبيقات باستراتيجية عروض الأسعار التي يجب استخدامها في الحملة المعنيّة، ولكنّها قد تكون غير بديهية عندما تكون الرسائل فارغة.

عند تعديل الحقل campaign.name، وهو سلسلة، نضبط الحقل من خلال تعديله مباشرةً كما لو كان سمة كائن Python عادية:

campaign.name = "Test campaign value"

campaign.manual_cpc هو حقل متداخل، مما يعني أنه يحتوي على رسالة نموذج أوّلي أخرى وليس نوعًا أساسيًا، مثل سلسلة. يمكنك تعديل حقوله مباشرةً أيضًا:

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"، ولكن لا يحتوي أي من حقوله على قيم. عند إرسال طلب إلى واجهة برمجة التطبيقات التي تستخدم هذا النمط، يمكنك التحقق من ضبط كائن الرسالة الفارغ بشكل صحيح من خلال تفعيل logging وفحص حمولة الطلب.

وأخيرًا، عليك إضافة هذا الحقل يدويًا إلى 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")