کلاس 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
تکرار کننده، از طریق آنها تکرار کنید. برای تغییر زمینه اجرا به حساب مشتری، باید از روش 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
، روی چندین حساب مشتری به صورت موازی کار کنید. متد 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.
...
}
اگر میخواهید یک شی پیکربندی جاوا اسکریپت را ارسال کنید که حاوی تنظیمات خاص حساب است، میتوانید ابتدا آن را با استفاده از روش 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
به تابع callback ارسال می شوند. اگر یک رشته JSON را از تابع برگردانید، می توانید آن را با استفاده از روش 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 به این صفحه مراجعه کنید.