Ads Manager स्क्रिप्ट

Google Ads स्क्रिप्ट में मौजूद AdsManagerApp क्लास की मदद से, अपने मैनेजर खाते से लिंक किए गए खातों को मैनेज किया जा सकता है. हर खाते के लिए अलग-अलग स्क्रिप्ट बनाने के बजाय, एक स्क्रिप्ट की मदद से अपने सभी विज्ञापन देने वाले खातों को मैनेज किया जा सकता है.

खातों की सूची पाना

` accounts ` तरीके का इस्तेमाल करके, मैनेजर खाते के तहत आने वाले खातों की सूची पाई जा सकती है. उदाहरण के लिए:

const accountSelector = AdsManagerApp.accounts()
    .withCondition('customer_client.descriptive_name = "My Account"');

const accountIterator = accountSelector.get();

खातों की सूची पाने के लिए, कुछ शर्तें लागू होती हैं:

  • अगर आपके पास कई लेवल वाला क्रम है, तो मैनेजर खातों की सूची नहीं पाई जा सकती. सिर्फ़ क्लाइंट खातों को चुना जा सकता है.
  • डिफ़ॉल्ट रूप से, बंद किए गए, रद्द किए गए, और निलंबित किए गए खाते नहीं दिखाए जाते. customer_client.status के लिए कोई दूसरा फ़िल्टर तय करके, withCondition को कॉल करके इस सेटिंग को बदला जा सकता है.

accounts को कॉल करने पर, डिफ़ॉल्ट रूप से मैनेजर खाते के क्रम में मौजूद सभी क्लाइंट खातों की सूची मिलती है. अपनी स्क्रिप्ट से मिलने वाले खातों की संख्या को सीमित करने के लिए, withLimit क्लास के ManagedAccountSelector तरीके का इस्तेमाल किया जा सकता है. `withIds` 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 स्क्रिप्ट की मदद से, एक साथ कई क्लाइंट खातों पर काम किया जा सकता है. इसके लिए, executeInParallel तरीके का इस्तेमाल किया जा सकता है. ManagedAccountSelector executeInParallel तरीके का सिग्नेचर यहां दिया गया है:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

executeInParallel तरीका, functionName से तय किया गया फ़ंक्शन, ManagedAccount से मैच होने वाले हर ManagedAccountSelector पर एक्ज़ीक्यूट करता है. सभी खातों को प्रोसेस करने के बाद, कॉलबैक फ़ंक्शन को एक बार एक्ज़ीक्यूट किया जाता है. यह फ़ंक्शन, अगर 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 स्ट्रिंग दिखाई है, तो उसे वापस JavaScript ऑब्जेक्ट में बदला जा सकता है JSON.parse तरीके का इस्तेमाल करके:

function callbackFunctionName(results) {
  for (var i = 0; i < results.length; i++) {
    var resultObj = JSON.parse(results[i].getReturnValue());
  }
}

The executeInParallel तरीका, ज़्यादा से ज़्यादा 50 accounts, पर काम करता है. इसलिए, आपको अपनी स्क्रिप्ट से मिलने वाले खातों की संख्या को सीमित करने के लिए, अपनी पाबंदियां लागू करनी होंगी. अपनी स्क्रिप्ट से मिलने वाले खातों की संख्या को सीमित करने के लिए, ManagedAccountSelector क्लास के withLimit या withIds तरीके का इस्तेमाल किया जा सकता है.

एक्ज़ीक्यूशन के लिए समयसीमाएं

Ads Manager स्क्रिप्ट के एक्ज़ीक्यूशन के लिए समयसीमाओं के बारे में ज़्यादा जानकारी पाने के लिए, सीमाओं से जुड़ा दस्तावेज़ देखें.