खाली मैसेज ऑब्जेक्ट को फ़ील्ड के तौर पर सेट करना

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 है जिसमें बेहतर CPC सक्षम हो.

हालांकि, अगर आपको manual_cpm का इस्तेमाल करना हो, तो क्या होता है, जो खाली है? या manual_cpc तो बेहतर cpc को चालू किए बिना? ऐसा करने के लिए आपको एक अलग कैंपेन पर क्लास के खाली इंस्टेंस की संख्या डालें, उदाहरण के लिए:

client = GoogleAdsClient.load_from_storage()

empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)

ध्यान दें कि campaign ऑब्जेक्ट के लिए manual_cpm तय करने का तरीका:

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