म्यूट करें

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: अगर आपको स्क्रिप्ट के डिफ़ॉल्ट वर्शन के बजाय किसी अन्य वर्शन का इस्तेमाल करना है, तो कस्टम एपीआई वर्शन तय किया जा सकता है. जैसे, V23. उस समय, सार्वजनिक तौर पर उपलब्ध किसी भी वर्शन का इस्तेमाल किया जा सकता है.
  • 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});