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

Google Ads API में, कुछ मैसेज फ़ील्ड का इस्तेमाल Campaign के लिए बिडिंग रणनीति चुनने के लिए किया जाता है. इनके उदाहरण हो सकते हैं:

  • पूरी तरह से खाली मैसेज: उदाहरण के लिए, campaign.manual_cpm में कोई सब-फ़ील्ड तय नहीं किया गया है.
  • वैकल्पिक फ़ील्ड वाले मैसेज: उदाहरण के लिए, campaign.manual_cpc में वैकल्पिक सब-फ़ील्ड enhanced_cpc_enabled होता है.

campaign.name जैसे किसी प्रिमिटिव फ़ील्ड को अपडेट करने के लिए, इसे सीधे तौर पर सेट करें:

campaign.name = "Test campaign value"

अगर आपको सेट किए जा सकने वाले सब-फ़ील्ड वाले नेस्ट किए गए मैसेज को अपडेट करना है, तो बेहतर सीपीसी चालू करते समय उसे इस तरह सेट करें:campaign.manual_cpc

campaign.manual_cpc.enhanced_cpc_enabled = True

ऐसे मैसेज सेट करना जिनमें कोई कॉन्टेंट न हो

manual_cpm जैसी बिडिंग की रणनीति का इस्तेमाल करने के लिए, जो एक खाली मैसेज है:

  1. मैसेज टाइप (ManualCpm) का खाली इंस्टेंस पाएं.
  2. client.copy_from का इस्तेमाल करके, इस खाली इंस्टेंस को कैंपेन के फ़ील्ड में असाइन करें.
  3. CampaignOperation पर मौजूद update_mask में, फ़ील्ड का नाम (manual_cpm) मैन्युअल तरीके से जोड़ें. फ़ील्ड मास्क हेल्पर अपने-आप यह पता नहीं लगा सकता कि कोई मैसेज खाली है.
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.

# 1. Get an empty ManualCpm type
empty_cpm = client.get_type('ManualCpm')
# 2. Copy it to the campaign's manual_cpm field
client.copy_from(campaign.manual_cpm, empty_cpm)

# 3. Manually add "manual_cpm" to the update_mask.
from google.api_core.protobuf_helpers import field_mask
campaign_operation = client.get_type('CampaignOperation')
campaign_operation.update = campaign
campaign_operation.update_mask = field_mask(None, campaign)
campaign_operation.update_mask.paths.append("manual_cpm")

# The resulting proto sent to the API will include:
# manual_cpm {
# }

वैकल्पिक सब-फ़ील्ड के साथ मैसेज सेट करना

enhanced_cpc_enabled को चालू किए बिना, बिडिंग की रणनीति के तौर पर manual_cpc का इस्तेमाल करने के लिए, ManualCpm के जैसा तरीका आज़माया जा सकता है. हालांकि, ManualCpc में सब फ़ील्ड हैं. इसलिए, manual_cpc को update_mask में जोड़ने पर FieldMaskError.FIELD_HAS_SUBFIELDS गड़बड़ी होती है. अगर मास्क किए गए मैसेज में सब-फ़ील्ड हैं, तो एपीआई को ज़्यादा जानकारी की ज़रूरत होती है.

enhanced_cpc_enabled को सेट न करते हुए, campaign.manual_cpc को सही तरीके से सेट करने के लिए:

  1. एक खाली ManualCpc ऑब्जेक्ट बनाएं और उसे campaign.manual_cpc को असाइन करें.
  2. CampaignOperation पर मौजूद update_mask में, ManualCpc के हर ऐसे सब-फ़ील्ड का पाथ मैन्युअल तरीके से जोड़ें जिसमें बदलाव किया जा सकता है. इस मामले में, काम का सब-फ़ील्ड enhanced_cpc_enabled है.
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.

# 1. Instantiate and assign an empty ManualCpc
campaign.manual_cpc = client.get_type('ManualCpc')

# 2. Manually add the subfield path to the update_mask.
from google.api_core.protobuf_helpers import field_mask
campaign_operation = client.get_type('CampaignOperation')
campaign_operation.update = campaign
campaign_operation.update_mask = field_mask(None, campaign)

# For ManualCpc, because it has subfields, you MUST specify the subfield
# path in the update_mask. This tells the API you are updating something
# within manual_cpc. By not setting enhanced_cpc_enabled on the campaign
# object, it defaults to false.
campaign_operation.update_mask.paths.append("manual_cpc.enhanced_cpc_enabled")

# The update_mask paths will include: ['manual_cpc.enhanced_cpc_enabled']
# This correctly signals to the API that ManualCpc is the chosen strategy,
# with enhanced_cpc_enabled in its default state.

इन पैटर्न का इस्तेमाल करके अनुरोध भेजते समय, पेलोड की पुष्टि की जा सकती है. इसके लिए, लॉगिंग चालू करें और अनुरोध की जांच करें.