Google Ads स्क्रिप्ट में मौजूद
AdsManagerApp
क्लास की मदद से, अपने मैनेजर खाते से लिंक किए गए खातों को मैनेज किया जा सकता है. हर खाते के लिए अलग स्क्रिप्ट बनाने के बजाय, एक ही स्क्रिप्ट से विज्ञापन देने वाले सभी खातों को मैनेज किया जा सकता है.
खातों की सूची वापस पाना
मैनेजर खाते से जुड़े खातों को वापस पाने के लिए, accounts
तरीके का इस्तेमाल किया जा सकता है. उदाहरण के लिए:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
वे खाते वापस पाए जा सकते हैं जिन पर ये पाबंदियां लागू नहीं होतीं:
- अगर आपके पास कई लेवल वाला पदानुक्रम है, तो मैनेजर खातों को वापस नहीं लाया जा सकता. सिर्फ़ क्लाइंट खातों को चुना जा सकता है.
- डिफ़ॉल्ट रूप से, बंद किए गए, रद्द किए गए, और निलंबित किए गए खातों को वापस नहीं लाया जाता.
withCondition
को कॉल करके, इस व्यवहार को बदला जा सकता है. इसके लिए,customer_client.status
के लिए कोई दूसरा फ़िल्टर तय करें.
accounts
कॉल, मैनेजर खाते के तहत आने वाले सभी क्लाइंट खातों की सूची को डिफ़ॉल्ट रूप से वापस लाता है. आपकी स्क्रिप्ट कितने खातों से डेटा इकट्ठा करेगी, यह तय करने के लिए ManagedAccountSelector
क्लास के withLimit
तरीके का इस्तेमाल किया जा सकता है. खातों को उनके ग्राहक आईडी के हिसाब से चुनने का एक और तरीका है. इसके लिए, withIds
तरीके का इस्तेमाल करें:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
क्लाइंट खातों को मैनेज करना
क्लाइंट खातों को वापस पाने के बाद, उन्हें इटरेटर के hasNext
और next
तरीकों का इस्तेमाल करके दोहराया जा सकता है. आपको क्लाइंट खाते में एक्ज़ीक्यूशन कॉन्टेक्स्ट स्विच करने के लिए, select
तरीके का इस्तेमाल करना होगा. क्लाइंट खाता चुनने के बाद, आगे किए जाने वाले सभी एपीआई कॉल, क्लाइंट खाते पर लागू होते हैं. ऐसा तब तक होता है, जब तक कि कोई दूसरा खाता नहीं चुना जाता:
// Keep track of the manager account for future reference.
const managerAccount = AdsApp.currentAccount();
// Select your accounts
const accountIterator = AdsManagerApp.accounts()
// ... Write some logic here to select the accounts you want using
// withCondition or withIds
// Iterate through the list of accounts
for (const account of accountIterator) {
// Select the client account.
AdsManagerApp.select(account);
// Select Search and Display campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
खातों पर एक साथ काम करना
Google Ads स्क्रिप्ट की मदद से, एक साथ कई क्लाइंट खातों को मैनेज किया जा सकता है. इसके लिए, ManagedAccountSelector
क्लास के executeInParallel
तरीके का इस्तेमाल किया जाता है. executeInParallel
तरीके का हस्ताक्षर यह है:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
executeInParallel
तरीका, functionName
में बताए गए फ़ंक्शन को हर ManagedAccount
पर लागू करता है. ManagedAccountSelector
से मेल खाने वाले हर ManagedAccount
पर यह फ़ंक्शन लागू होता है. सभी खातों को प्रोसेस करने के बाद, कॉलबैक फ़ंक्शन को एक बार चलाया जाता है. हालांकि, ऐसा तब होता है, जब optionalCallbackFunctionName
ने इसे तय किया हो. यह फ़ंक्शन, ExecutionResult
ऑब्जेक्ट की सूची को अपने तर्क के तौर पर पास करता है, ताकि आगे की प्रोसेसिंग की जा सके. यहां सामान्य इस्तेमाल दिखाया गया है:
function main() {
const accountSelector = AdsManagerApp.accounts()
.withLimit(50)
.withCondition('customer_client.currency_code = "USD"');
accountSelector.executeInParallel("processClientAccount", "afterProcessAllClientAccounts");
}
function processClientAccount() {
const clientAccount = AdsApp.currentAccount();
// Process your client account here.
...
// optionally, return a result, as text.
return "";
}
function afterProcessAllClientAccounts(results) {
for (const result of results) {
// Process the result further
...
}
}
functionName
से तय किया गया फ़ंक्शन, स्ट्रिंग आर्ग्युमेंट (optionalInput
) को स्वीकार कर सकता है. इस पैरामीटर का इस्तेमाल, executeInParallel
से कॉल किए गए सभी पैरलल तरीकों में एक और पैरामीटर पास करने के लिए किया जा सकता है:
function main() {
const accountSelector = AdsManagerApp.accounts().withIds([1234567890, 3456787890]);
const sharedParameter = "INSERT_SHARED_PARAMETER_HERE";
accountSelector.executeInParallel("processClientAccount", null, sharedParameter);
}
function processClientAccount(sharedParameter) {
// Process your client account here.
...
}
अगर आपको खाता-विशिष्ट सेटिंग वाला JavaScript कॉन्फ़िगरेशन ऑब्जेक्ट पास करना है, तो पहले इसे JSON.stringify
तरीके का इस्तेमाल करके स्ट्रिंग में बदलें:
function main() {
...
const accountFlags = {
'1234567890': {
'label': 'Brand 1 campaigns',
},
'3456787890': {
'label': 'Brand 2 campaigns',
}
};
accountSelector.executeInParallel("processClientAccount", null,
JSON.stringify(accountFlags));
...
}
function processClientAccount(sharedParameter) {
const accountFlags = JSON.parse(sharedParameter);
// Process your client account here.
...
}
functionName
से तय किया गया फ़ंक्शन, JSON.stringify
के ज़रिए ऑब्जेक्ट के बजाय स्ट्रिंग भी दिखा सकता है:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
लौटाई गई वैल्यू को कॉलबैक फ़ंक्शन में, ExecutionResult
ऑब्जेक्ट की सूची के तौर पर पास किया जाता है. अगर आपने फ़ंक्शन से JSON स्ट्रिंग दिखाई है, तो JSON.parse
तरीके का इस्तेमाल करके, उसे वापस JavaScript ऑब्जेक्ट में बदला जा सकता है:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
executeInParallel
तरीके से ज़्यादा से ज़्यादा 50 accounts
को मैनेज किया जा सकता है. इसलिए, आपको अपनी पाबंदियां लागू करनी होंगी, ताकि आपकी स्क्रिप्ट से मैनेज किए जाने वाले खातों की संख्या सीमित की जा सके. आपकी स्क्रिप्ट कितने खातों से डेटा इकट्ठा करेगी, यह तय करने के लिए ManagedAccountSelector
क्लास के withLimit
या withIds
तरीके का इस्तेमाल किया जा सकता है.
स्क्रिप्ट को एक साथ कई टास्क के लिए चलाने की समयसीमाएं
Ads Manager स्क्रिप्ट को चलाने की समयसीमा के बारे में जानने के लिए, सीमाओं से जुड़ा दस्तावेज़ देखें.