एक ही अनुरोध में कई तरह के संसाधनों में बदलाव करने या सभी बदलावों को एक ही यूनीफ़ाइड एंडपॉइंट पर भेजने के लिए, GoogleAdsService.Mutate का इस्तेमाल करें. काम करने वाले सभी ऑपरेशनों की पूरी सूची देखने के लिए, MutateOperation रेफ़रंस देखें.
बदलाव करने से जुड़ी कार्रवाइयां
हर MutateGoogleAdsRequest, अपने mutate_operations फ़ील्ड में दोहराए गए MutateOperation को स्वीकार करता है:
- संसाधन में बदलाव करने की कार्रवाइयां (सभी वर्शन के लिए उपलब्ध): हर एंट्री में, एक संसाधन टाइप के लिए एक
create,updateयाremoveकार्रवाई तय की जा सकती है. - कार्रवाई से जुड़ी कार्रवाइयां (v23 और इसके बाद के वर्शन): हर एंट्री में कार्रवाई से जुड़ी कोई कार्रवाई भी तय की जा सकती है. जैसे,
book_campaigns_operationयाquote_campaigns_operation(v22 में,MutateOperationसिर्फ़ संसाधन में बदलाव करने से जुड़ी कार्रवाइयों के साथ काम करता है).
एक ही GoogleAdsService.Mutate कॉल में, एक-दूसरे पर निर्भर रहने वाली इकाइयां (जैसे, कैंपेन और विज्ञापन ग्रुप) बनाने के लिए, दो MutateOperation एंट्री बनाएं. इनमें से एक में CampaignOperation और दूसरी में AdGroupOperation शामिल हो. कैंपेन को नेगेटिव आईडी (जैसे, customers/CUSTOMER_ID/campaigns/-1) वाला अस्थायी संसाधन का नाम असाइन करें, ताकि विज्ञापन ग्रुप ऑपरेशन, एक ही अनुरोध में इसे रेफ़रंस के तौर पर इस्तेमाल कर सके:
Python
import uuid campaign_budget_service = client.get_service("CampaignBudgetService") campaign_service = client.get_service("CampaignService") googleads_service = client.get_service("GoogleAdsService") campaign_budget_resource_name = campaign_budget_service.campaign_budget_path( customer_id, budget_id ) temp_campaign_resource_name = campaign_service.campaign_path(customer_id, "-1") mutate_operation1 = client.get_type("MutateOperation") campaign = mutate_operation1.campaign_operation.create campaign.resource_name = temp_campaign_resource_name campaign.name = f"Bulk Mutate Campaign #{uuid.uuid4()}" campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SEARCH ) campaign.status = client.enums.CampaignStatusEnum.PAUSED campaign.manual_cpc = client.get_type("ManualCpc") campaign.campaign_budget = campaign_budget_resource_name campaign.contains_eu_political_advertising = ( client.enums.EuPoliticalAdvertisingStatusEnum.DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING ) mutate_operation2 = client.get_type("MutateOperation") ad_group = mutate_operation2.ad_group_operation.create ad_group.name = "Bulk Mutate Ad Group" ad_group.campaign = temp_campaign_resource_name ad_group.status = client.enums.AdGroupStatusEnum.ENABLED response = googleads_service.mutate( customer_id=customer_id, mutate_operations=[mutate_operation1, mutate_operation2], ) for op_response in response.mutate_operation_responses: result_type = op_response._pb.WhichOneof("response") result = getattr(op_response, result_type) print(f"Created {result_type}: {result.resource_name}")
Ruby
campaign_budget_resource_name = client.path.campaign_budget(customer_id, budget_id) temp_campaign_resource_name = client.path.campaign(customer_id, -1) mutate_operation1 = client.operation.mutate do |m| m.campaign_operation = client.operation.create_resource.campaign do |c| c.resource_name = temp_campaign_resource_name c.name = "Bulk Mutate Campaign #{(Time.new.to_f * 1000).to_i}" c.advertising_channel_type = :SEARCH c.status = :PAUSED c.manual_cpc = client.resource.manual_cpc c.campaign_budget = campaign_budget_resource_name c.contains_eu_political_advertising = :DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING end end mutate_operation2 = client.operation.mutate do |m| m.ad_group_operation = client.operation.create_resource.ad_group do |ag| ag.name = "Bulk Mutate Ad Group" ag.campaign = temp_campaign_resource_name ag.status = :ENABLED end end response = client.service.google_ads.mutate( customer_id: customer_id, mutate_operations: [mutate_operation1, mutate_operation2] ) response.mutate_operation_responses.each do |op_response| result = op_response.send(op_response.response) puts "Created #{op_response.response}: #{result.resource_name}" end
एटॉमिसिटी और कुछ हद तक फ़ेल होना
डिफ़ॉल्ट रूप से, GoogleAdsService.Mutate अनुरोध में मौजूद कार्रवाइयां एक साथ पूरी होती हैं. इसका मतलब है कि सभी कार्रवाइयां एक साथ पूरी होती हैं या किसी भी कार्रवाई में गड़बड़ी होने पर पूरा अनुरोध पूरा नहीं होता है.
अलग-अलग संसाधन सेवाओं की तरह, यह एंडपॉइंट इन विकल्पों के साथ काम करता है:
- कुछ कार्रवाइयां पूरी नहीं हुईं
(
partial_failure = true): यह फ़ंक्शन, मान्य कार्रवाइयों को पूरा करता है औरpartial_failure_errorमें पूरी नहीं हुई कार्रवाइयों के लिए गड़बड़ियां दिखाता है. - पुष्टि करने का मोड (
validate_only = true): यह मोड, खाते में बदलाव किए बिना गड़बड़ियों के लिए कार्रवाइयों की जांच करता है:- संसाधन में बदलाव करने की कार्रवाइयां: सिर्फ़ पुष्टि से जुड़ी गड़बड़ियां दिखाता है और नतीजे नहीं दिखाता.
- कार्रवाई से जुड़े ऑपरेशन (v23 और इसके बाद के वर्शन): पुष्टि होने पर, कार्रवाई का नतीजा (जैसे कि
quote_campaigns_resultयाbook_campaigns_result) दिखाता है. अगर पुष्टि करने में गड़बड़ियां होती हैं, तो कार्रवाई का नतीजाMutateOperationResponseमें नहीं दिखता. हालांकि,ErrorDetails.reservation_error_detailsमें अब भी कोटेशन दिख सकता है. ध्यान दें किquote_campaigns_operationके लिएvalidate_only = trueऔरpartial_failure = falseज़रूरी हैं.