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

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