Ads Manager स्क्रिप्ट

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

खातों की सूची फिर से पाएं

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

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

const accountIterator = accountSelector.get();

खातों पर कुछ पाबंदियां हैं, जिन्हें फिर से पाया जा सकता है:

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

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

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

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

एक्ज़ीक्यूशन की समयसीमा

Ads Manager स्क्रिप्ट लागू होने की समयसीमा की जानकारी के लिए इस पेज पर जाएं.