הכיתה AdsManagerApp בסקריפטים של Google Ads מאפשרת לכם לנהל חשבונות שמקושרים לחשבון הניהול שלכם. אתם יכולים לנהל את כל חשבונות המפרסמים באמצעות סקריפט אחד, במקום ליצור סקריפט נפרד לכל חשבון.
אחזור רשימת החשבונות
כדי לאחזר חשבונות שמשויכים לחשבון ניהול, אפשר להשתמש ב-method accounts, לדוגמה:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
יש כמה הגבלות על החשבונות שאפשר לאחזר:
- אם יש לכם היררכיה מרובת רמות, אי אפשר לאחזר חשבונות ניהול. אפשר לבחור רק חשבונות לקוח.
- כברירת מחדל, חשבונות סגורים, מבוטלים ומושעים לא מוחזרים. כדי לשנות את ההתנהגות הזו, אפשר להפעיל את
withConditionולציין מסנן אחר ל-customer_client.status.
הקריאה accounts מאחזרת כברירת מחדל את רשימת כל חשבונות הלקוח בהיררכיית חשבון הניהול. אפשר להשתמש ב-method 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 של האיטרטור. כדי להעביר את הקשר הביצוע לחשבון לקוח, צריך להשתמש ב-method 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 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). אפשר להשתמש בפרמטר הזה כדי להעביר פרמטר נוסף לכל הפעלות ה-method המקבילות שנקראות על ידי 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 באמצעות ה-method JSON.parse:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
השיטה
executeInParallel
פועלת על מספר מקסימלי של 50
accounts, ולכן תצטרכו להטמיע הגבלות משלכם כדי להגביל את מספר החשבונות שהסקריפט מאחזר. אפשר להשתמש ב-method withLimit או withIds של המחלקה ManagedAccountSelector כדי להגביל את מספר החשבונות שהסקריפט מאחזר.
מגבלות זמן הרצה
פרטים על מגבלות הזמן להרצת סקריפטים ב-Ads Manager מופיעים במאמרי העזרה בנושא מגבלות.