تتيح لك الفئة
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 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" البرمجية.