באמצעות הכיתה AdsManagerApp
בסקריפטים של Google Ads אפשר לנהל חשבונות שמקושרים לחשבון הניהול. אתם יכולים לנהל את כל חשבונות המפרסמים שלכם באמצעות סקריפט אחד, במקום ליצור סקריפט נפרד לכל חשבון.
אחזור רשימת החשבונות
אפשר לאחזר חשבונות בחשבון ניהול באמצעות השיטה 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
של ה-iterator. כדי להחליף את הקשר של הביצוע לחשבון לקוח, צריך להשתמש ב-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 campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
עבודה על חשבונות במקביל
סקריפטים של Google Ads מאפשרים לפעול בכמה חשבונות לקוח בו-זמנית, באמצעות השיטה executeInParallel
של הכיתה 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
:
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
לכל היותר, כך שתצטרכו להטמיע הגבלות משלכם כדי להגביל את מספר החשבונות שהסקריפט מאחזר. אפשר להשתמש ב-method withLimit
או ב-method withIds
של הכיתה ManagedAccountSelector
כדי להגביל את מספר החשבונות שהסקריפט מאחזר.
מגבלות זמן לביצוע
בדף הזה מפורטות המגבלות על זמני הביצוע של סקריפטים ב-Ad Manager.