म्यूट करें

Google Ads स्क्रिप्ट, Google Ads API में उपलब्ध सामान्य बदलावों के लिए सहायता देती हैं. GoogleAdsService.mutate से किए जा सकने वाले ज़्यादातर काम, Google Ads स्क्रिप्ट में भी किए जा सकते हैं. इनमें कैंपेन बनाना और मैनेज करना भी शामिल है.

इस सुविधा की मदद से, Google Ads API के ज़्यादातर हिस्से को ऐक्सेस किया जा सकता है. इसलिए, इस सुविधा का इस्तेमाल करने के लिए, Google Ads API के कॉन्वेंशन के बारे में बुनियादी जानकारी होना ज़रूरी है. डेवलपर टोकन और अनुमति जैसे कई पहलुओं को छोड़ा जा सकता है, क्योंकि Google Ads स्क्रिप्ट आपके लिए इनका इस्तेमाल करती हैं. हालांकि, आपको बदलाव का मान्य अनुरोध करना होगा.

यहां Google Ads API REST इंटरफ़ेस पर कुछ बुनियादी संसाधन दिए गए हैं, जिनसे आपको पता होना चाहिए और इस गाइड को जारी रखें:

बुनियादी उदाहरण

इस सुविधा के काम करने का तरीका जानने के लिए, कैंपेन का बजट बनाने वाला यह बुनियादी उदाहरण देखें:

const budgetResult = AdsApp.mutate({
    campaignBudgetOperation: {
      create: {
        amountMicros: 10000000,
        explicitlyShared: false
      }
    }
  });

AdsApp.mutate को कॉल करने पर, एक ऐसा JSON ऑब्जेक्ट मिलता है जो एक MutateOperation को दिखाता है. इस ऑब्जेक्ट में, यह बताया जाता है कि किस तरह का ऑपरेशन किया जा रहा है. इस मामले में, यह एक campaignBudgetOperation है. इसके बाद, आपको create, remove या update और updateMask, दोनों का इस्तेमाल करना होगा. create और update में मौजूद खास फ़ील्ड, इस बात पर निर्भर करते हैं कि आप किस तरह के संसाधन पर काम कर रहे हैं.

कोई कार्रवाई बनाना

मान्य ऑपरेशन बनाने के लिए, कुछ रणनीतियों का इस्तेमाल किया जा सकता है. कैंपेन बजट के उदाहरण के आधार पर, कैंपेन बजट के लिए REST रेफ़रंस दस्तावेज़ देखकर, इसके सभी मान्य फ़ील्ड की सूची देखी जा सकती है. इसके बाद, सही फ़ील्ड भरें या सही ऑब्जेक्ट बनाने के लिए, अपनी स्क्रिप्ट में कस्टम JavaScript कोड लिखें.

इसके अलावा, कैंपेन के बजट के लिए "इसे आज़माएं" सुविधा का इस्तेमाल करके, डाइनैमिक तौर पर ऑपरेशन बनाने की कोशिश की जा सकती है. इस सुविधा की मदद से, आपको जो फ़ील्ड जोड़ने हैं उन्हें चुनकर, डाइनैमिक तौर पर अनुरोध बॉडी बनाया जा सकता है. इसके बाद, जनरेट किए गए नतीजे से ऑपरेशन के कॉन्टेंट को निकाला जा सकता है. साथ ही, ऑपरेशन टाइप की जानकारी देने के बाद, उसे अपने mutate कॉल में जोड़ा जा सकता है.

ऑपरेशन के टाइप

बनाएं

अपने ऑपरेशन में create की जानकारी दें. इसके लिए, उस संसाधन के ऑब्जेक्ट का प्रतिनिधित्व करें जिसे आपको बनाना है.

create कार्रवाई का उदाहरण ऊपर देखें.

हटाएं

अपने ऑपरेशन में remove डालें. साथ ही, उस रिसॉर्स का नाम डालें जिसे आपको हटाना है. उदाहरण के लिए:

AdsApp.mutate({
    adGroupOperation: {
        remove: "customers/[CUSTOMER_ID]/adGroups/[AD_GROUP_ID]"
    }
});

अगर आपको किसी इकाई के संसाधन का नाम नहीं पता है, तो Adsapp.search अनुरोध की मदद से उसे फ़ेच किया जा सकता है.

अपडेट करें

अपने ऑपरेशन में update बताएं. इसके लिए, संसाधन के नाम के साथ ऑब्जेक्ट को पास करें, ताकि सिस्टम यह तय कर सके कि आपको किस ऑब्जेक्ट को अपडेट करना है. इसके अलावा, जिन फ़ील्ड की वैल्यू आपको अपडेट करनी है उन्हें भरें. साथ ही, updateMask में यह बताएं कि आपको इस अनुरोध में किन फ़ील्ड में बदलाव करना है. अपडेट मास्क में, संसाधन का नाम शामिल न करें.

update ऑपरेशन का उदाहरण:

const campaignResult = AdsApp.mutate({
    campaignOperation: {
        update: {
            resourceName: "customers/[CUSTOMER_ID]/campaigns/[CAMPAIGN_ID]",
            status: "PAUSED",
            name: "[Paused] My campaign"
        },
        updateMask: "name,status"
    }
});

नतीजों को मैनेज करना

ऑपरेशन टाइप चाहे जो भी हो, रिटर्न वैल्यू एक MutateResult होती है. बदलाव के बाद, संसाधन की मौजूदा स्थिति के बारे में क्वेरी करने के लिए, लौटाए गए संसाधन के नाम का इस्तेमाल किया जा सकता है. साथ ही, यह भी देखा जा सकता है कि कार्रवाई पूरी हुई या नहीं या कोई गड़बड़ी होने पर क्या हुआ.

यहां नतीजे की जांच करने और लॉग में कुछ जानकारी प्रिंट करने के लिए, बुनियादी फ़्लो दिखाने वाला एक उदाहरण दिया गया है:

const result = AdsApp.mutate( ... );
if (result.isSuccessful()) {
    console.log(`Resource ${result.getResourceName()} successfully mutated.`);
} else {
    console.log("Errors encountered:");
    for (const error of result.getErrorMessages()) {
        console.log(error);
    }
}

एक से ज़्यादा ऑपरेशन

Google Ads स्क्रिप्ट, AdsApp.mutateAll के तरीके से, एक ही अनुरोध में कई ऑपरेशन में बदलाव करने की सुविधा भी देती हैं. एक ही अनुरोध में, एक-दूसरे पर निर्भर इकाइयां बनाई जा सकती हैं. जैसे, पूरे कैंपेन की हैरारकी. आपके पास ऑपरेशन के पूरे सेट को ऐटॉमिक बनाने का विकल्प होता है. इससे, अगर कोई ऑपरेशन पूरा नहीं होता है, तो कोई भी ऑपरेशन पूरा नहीं होता.

रिटर्न वैल्यू, MutateResult ऑब्जेक्ट का कलेक्शन होती है. यह आपकी दी गई हर कार्रवाई के लिए होती है और शुरुआती कार्रवाइयों के क्रम में होती है.

यह सुविधा, Google Ads API की सुविधा की तरह ही काम करती है. इसलिए, टेंप्लेट आईडी और अन्य बातों के बारे में पूरी जानकारी पाने के लिए, Google Ads API के सबसे सही तरीकों की गाइड देखें. ध्यान दें कि फ़ील्ड के नाम दिखाने के लिए, गाइड में snake_case का इस्तेमाल किया गया है, जबकि Google Ads स्क्रिप्ट के दस्तावेज़ में lowerCamelCase का इस्तेमाल किया गया है. Google Ads स्क्रिप्ट में, इन दोनों मामलों को स्वीकार किया जाता है. इसलिए, सीधे उस गाइड से कोड कॉपी किया जा सकता है.

एक ही अनुरोध में कई कार्रवाइयां करने के लिए, सभी कार्रवाइयों को एक कलेक्शन में इकट्ठा करें और फिर AdsApp.mutateAll को कॉल करें. mutateAll कॉल, पहले आर्ग्युमेंट के तौर पर ऑपरेशन की ऐरे और विकल्पों के दूसरे आर्ग्युमेंट को लेता है. इसमें ये विकल्प शामिल हैं:

  • apiVersion: अगर आपको स्क्रिप्ट के डिफ़ॉल्ट वर्शन के बजाय किसी दूसरे वर्शन का इस्तेमाल करना है, तो कस्टम एपीआई वर्शन तय किया जा सकता है, जैसे कि V18. इस दौरान, सार्वजनिक तौर पर उपलब्ध किसी भी वर्शन का इस्तेमाल किया जा सकता है.
  • partialFailure: इस फ़ील्ड की डिफ़ॉल्ट वैल्यू true होती है. अगर इस नीति को true पर सेट किया जाता है, तो मान्य कार्रवाइयां की जाती हैं और फ़ेल होने पर, गड़बड़ी दिखती है. अगर इसे false पर सेट किया जाता है, तो कोई भी कार्रवाई फ़ेल होने पर, कोई कार्रवाई नहीं होती है. इसका मतलब है कि इस सेट में एटॉमिक का इस्तेमाल किया जाता है.

यहां एक से ज़्यादा ऑपरेशन का उदाहरण दिया गया है, जो एक ही अनुरोध में कैंपेन बजट, कैंपेन, और विज्ञापन ग्रुप बनाता है.

const operations = [];
const customerId = 'INSERT_CUSTOMER_ID_HERE';
const budgetId = `customers/${customerId}/campaignBudgets/-1`;
const campaignId = `customers/${customerId}/campaigns/-2`;
operations.push({
    campaignBudgetOperation: {
      create: {
        resourceName: budgetId,
        amountMicros: 10000000,
        explicitlyShared: false
      }
    }
  });
operations.push({
    campaignOperation: {
      create: {
        resourceName: campaignId,
        name: 'New Campaign ' + new Date(),
        advertisingChannelType: 'SEARCH',
        manualCpc: {},
        campaignBudget: budgetId,
        advertisingChannelType: 'DISPLAY',
        networkSettings: {
          targetContentNetwork: true
        }
      }
    }
  });
operations.push({
    adGroupOperation: {
      create: {
        campaign: campaignId,
        name: 'New AdGroup ' + new Date(),
        optimizedTargetingEnabled: true
      }
    }
  });
const results = AdsApp.mutateAll(
    operations, {partialFailure: false});