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 जैसी बिडिंग की रणनीति का इस्तेमाल करने के लिए, जो एक खाली मैसेज है:
- मैसेज टाइप (
ManualCpm) का खाली इंस्टेंस पाएं. client.copy_fromका इस्तेमाल करके, इस खाली इंस्टेंस को कैंपेन के फ़ील्ड में असाइन करें.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 को सही तरीके से सेट करने के लिए:
- एक खाली
ManualCpcऑब्जेक्ट बनाएं और उसेcampaign.manual_cpcको असाइन करें. 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.
इन पैटर्न का इस्तेमाल करके अनुरोध भेजते समय, पेलोड की पुष्टि की जा सकती है. इसके लिए, लॉगिंग चालू करें और अनुरोध की जांच करें.