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