Ads Manager स्क्रिप्ट

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

खातों की सूची वापस पाएं

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

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

const accountIterator = accountSelector.get();

वापस लाए जा सकने वाले खातों पर कुछ पाबंदियां हैं:

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

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

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 में स्क्रिप्ट लागू करने की समयसीमा के बारे में जानकारी.