המחלקות
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
של המחלקה 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. כדי להחליף את הקשר של ההפעלה לחשבון לקוח, צריך להשתמש בשיטה 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
). אפשר להשתמש בפרמטר הזה כדי להעביר פרמטר נוסף לכל השיטות המקבילות שמופעלות על ידי 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
לכל היותר,
לכן תצטרכו להטמיע הגבלות משלכם כדי להגביל את מספר החשבונות שהסקריפט מאחזר. אפשר להשתמש בשיטה withLimit
או בשיטה withIds
של המחלקה ManagedAccountSelector
כדי להגביל את מספר החשבונות שהסקריפט מאחזר.
מגבלות זמן הביצוע
פרטים על מגבלות זמן ההרצה של סקריפטים ב-Ads Manager מופיעים במסמכי התיעוד בנושא מגבלות.