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