באמצעות הכיתה 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.