סקריפטים של Ads Manager

באמצעות הכיתה AdsManagerApp בסקריפטים של Google Ads אפשר לנהל חשבונות שמקושרים לחשבון הניהול. אתם יכולים לנהל את כל חשבונות המפרסמים שלכם באמצעות סקריפט אחד, במקום ליצור סקריפט נפרד לכל חשבון.

אחזור של רשימת חשבונות

אפשר לאחזר חשבונות בחשבון ניהול באמצעות השיטה accounts, לדוגמה:

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

const accountIterator = accountSelector.get();

יש מספר הגבלות על החשבונות שאפשר לאחזר:

  • אי אפשר לאחזר חשבונות ניהול אם יש לכם היררכיה עם כמה רמות. אפשר לבחור רק את חשבונות הלקוח.
  • כברירת מחדל, המערכת לא מחזירה חשבונות שנסגרו, בוטלו או הושעו. שלך כדי לשנות את ההתנהגות הזו, שולחים קריאה ל-withCondition מסנן לפי customer_client.status.

קריאה ל-accounts מאחזרת כברירת מחדל את רשימת כל חשבונות הלקוח בהיררכיית חשבון הניהול. אפשר להשתמש withLimit ה-method של ManagedAccountSelector class, כדי להגביל את מספר החשבונות שהסקריפט מאחזר. אפשרות נוספת היא לבחור את החשבונות לפי מספרי הלקוח שלהם באמצעות השיטה 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 כדי להעביר את הקשר הביצוע לחשבון לקוח. לאחר שבחרת חשבון הלקוח, כל קריאות נוספות ל-API יחולו על חשבון הלקוח עד בחר חשבון אחר באופן מפורש:

// 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 מאפשרים לכם לפעול במספר חשבונות לקוח במקביל, באמצעות executeInParallel ה-method של ManagedAccountSelector בכיתה. ל-method‏ executeInParallel יש את החתימה הבאה:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

השיטה executeInParallel מבצעת פונקציה שצוינה על ידי functionName על כל ManagedAccount שManagedAccountSelector תואם. אחרי עיבוד כל החשבונות, פונקציית ה-callback, אם היא צוינה על ידי 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 method:

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());
  }
}

executeInParallel פועלת על 50 תווים לכל היותר accounts, לכן תצטרכו ליישם הגבלות משלכם כדי להגביל את מספר החשבונות שהסקריפט מאחזר. אפשר להשתמש withLimit או withIds אמצעי תשלום אחד ManagedAccountSelector class, כדי להגביל את מספר החשבונות שהסקריפט מאחזר.

מגבלות זמן הביצוע

עבור לדף הזה פרטים על מגבלות הזמן לביצוע סקריפטים ב-Ads Manager.