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 गड़बड़ी होती है. अगर मास्क में मौजूद मैसेज में सबफ़ील्ड हैं, तो एपीआई को ज़्यादा जानकारी की ज़रूरत होती है.
campaign.manual_cpc को सही तरीके से सेट करने के लिए, यह पक्का करें कि enhanced_cpc_enabled सेट न हो:
- एक खाली
ManualCpcऑब्जेक्ट को इंस्टैंशिएट करें औरclient.copy_fromका इस्तेमाल करके, इसेcampaign.manual_cpcमें कॉपी करें. CampaignOperationपरupdate_maskमें,ManualCpcके हर म्यूटेबल सबफ़ील्ड का पाथ मैन्युअल तरीके से जोड़ें. इस मामले में, काम का सबफ़ील्ड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.
इन पैटर्न का इस्तेमाल करके अनुरोध भेजते समय, लॉगिंग को चालू करके और अनुरोध की जांच करके, पेलोड की पुष्टि की जा सकती है.