Google Ads API में, कुछ मैसेज फ़ील्ड का इस्तेमाल Campaign के लिए बिडिंग की रणनीति का विकल्प दिखाने के लिए किया जाता है.
इनके उदाहरण हो सकते हैं:
- पूरी तरह से खाली मैसेज: उदाहरण के लिए,
campaign.manual_cpmमें कोई सबफ़ील्ड तय नहीं किया गया है. - वैकल्पिक फ़ील्ड वाले मैसेज: उदाहरण के लिए,
campaign.manual_cpcमें वैकल्पिक सब-फ़ील्डenhanced_cpc_enabledहोता है.
ध्यान दें कि Campaign पर बिडिंग की रणनीति वाले फ़ील्ड, bidding_strategy oneof ग्रुप से जुड़े होते हैं. manual_cpm या manual_cpc जैसी नई बिडिंग रणनीति सेट करने से, उस oneof ग्रुप में पहले से कॉन्फ़िगर की गई बिडिंग रणनीति अपने-आप हट जाती है.
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) मैन्युअल तरीके से जोड़ें. फ़ील्ड मास्क हेल्पर अपने-आप यह पता नहीं लगा सकता कि कोई खाली मैसेज सेट किया गया है.
from google.ads.googleads import util
from google.ads.googleads.client import GoogleAdsClient
from google.api_core.protobuf_helpers import field_mask
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. Create the operation and manually add "manual_cpm" to the update_mask.
campaign_operation = client.get_type("CampaignOperation")
client.copy_from(campaign_operation.update, campaign)
client.copy_from(
campaign_operation.update_mask,
field_mask(None, util.convert_proto_plus_to_protobuf(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 में सबफ़ील्ड हैं. इसलिए, update_mask में manual_cpc जोड़ने पर, FieldMaskError.FIELD_HAS_SUBFIELDS गड़बड़ी होती है. अगर मास्क में मौजूद किसी मैसेज में सब-फ़ील्ड हैं, तो एपीआई को ज़्यादा जानकारी की ज़रूरत होती है.
enhanced_cpc_enabled को सेट करते समय, यह पक्का करने के लिए कि campaign.manual_cpc सेट न हो:
- एक खाली
ManualCpcऑब्जेक्ट इंस्टैंशिएट करें और उसेclient.copy_fromका इस्तेमाल करकेcampaign.manual_cpcमें कॉपी करें. CampaignOperationपर जाकर,ManualCpcके हर ऐसे सब-फ़ील्ड का पाथ मैन्युअल तरीके से जोड़ें जिसमें बदलाव किया जा सकता है. इसके लिए,update_maskका इस्तेमाल करें. इस मामले में, काम का सब-फ़ील्डenhanced_cpc_enabledहै.
from google.ads.googleads import util
from google.ads.googleads.client import GoogleAdsClient
from google.api_core.protobuf_helpers import field_mask
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.
# 1. Copy an empty ManualCpc object into campaign.manual_cpc.
client.copy_from(campaign.manual_cpc, client.get_type("ManualCpc"))
# 2. Manually add the subfield path to the update_mask.
campaign_operation = client.get_type("CampaignOperation")
client.copy_from(campaign_operation.update, campaign)
client.copy_from(
campaign_operation.update_mask,
field_mask(None, util.convert_proto_plus_to_protobuf(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.
इन पैटर्न का इस्तेमाल करके अनुरोध भेजते समय, लॉगिंग चालू करके और अनुरोध की जांच करके, पेलोड की पुष्टि की जा सकती है.