تتيح لك فئة
AdsManagerApp
في نصوص "إعلانات Google" البرمجية إدارة الحسابات المرتبطة ضمن
حسابك الإداري. يمكنك إدارة جميع حسابات المعلِنين من خلال نص برمجي واحد بدلاً من إنشاء نص برمجي منفصل لكل حساب.
استرداد قائمة الحسابات
يمكنك استرداد الحسابات ضمن حساب إداري باستخدام الطريقة
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
لتبديل سياق التنفيذ إلى حساب عميل. بعد اختيار حساب عميل، يتم تطبيق أي طلبات أخرى لواجهة برمجة التطبيقات على حساب العميل إلى أن تختار حسابًا آخر بشكل صريح:
// 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" البرمجية تنفيذ عمليات على حسابات عملاء متعددة بالتوازي، وذلك باستخدام طريقة
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
لتقييد عدد الحسابات التي يستردّها النص البرمجي.
الحدود الزمنية للتنفيذ
يُرجى الاطّلاع على مستندات الحدود القصوى لمعرفة تفاصيل عن الحدود القصوى لوقت تنفيذ نصوص "إعلانات Google" البرمجية.