Class
AdsManagerApp
dalam skrip Google Ads memungkinkan Anda mengelola akun yang ditautkan di bawah
Akun PengelolaAnda. Anda dapat mengelola semua akun pengiklan Anda melalui satu skrip, bukan membuat skrip terpisah untuk setiap akun.
Mengambil daftar akun
Anda dapat mengambil akun di bawah akun pengelola menggunakan
accounts
metode, misalnya:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
Ada beberapa batasan untuk akun yang dapat diambil:
- Akun pengelola tidak dapat diambil jika Anda memiliki hierarki multi-level. Hanya akun klien yang dapat dipilih.
- Secara default, akun yang ditutup, dibatalkan, dan ditangguhkan tidak ditampilkan. Anda dapat mengganti perilaku ini dengan memanggil
withConditionyang menentukan filter berbeda untukcustomer_client.status.
Panggilan accounts mengambil daftar semua akun klien di bawah hierarki akun pengelola secara default. Anda dapat menggunakan metode
withLimit
dari class
ManagedAccountSelector
untuk membatasi jumlah akun yang diambil oleh skrip Anda. Opsi lainnya adalah memilih akun berdasarkan ID pelanggannya menggunakan
withIds
metode:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Mengelola akun klien
Setelah mengambil akun klien, Anda dapat melakukan iterasi melalui akun tersebut menggunakan
metode
hasNext
dan
next
iterator. Anda harus menggunakan metode untuk mengalihkan konteks eksekusi ke akun klien.select Setelah Anda memilih akun klien, semua panggilan API berikutnya akan berlaku untuk akun klien hingga Anda secara eksplisit memilih akun lain:
// 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
...
}
Mengelola akun secara paralel
Skrip Google Ads memungkinkan Anda mengoperasikan beberapa akun klien secara paralel, menggunakan metode
executeInParallel
dari class
ManagedAccountSelector. Metode executeInParallel memiliki tanda tangan berikut:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
Metode executeInParallel menjalankan fungsi yang ditentukan oleh functionName
pada setiap
ManagedAccount
yang cocok dengan
ManagedAccountSelector. Setelah semua akun diproses, fungsi callback, jika
ditentukan oleh optionalCallbackFunctionName, akan dieksekusi satu kali, dengan meneruskan daftar
objek
ExecutionResult
sebagai argumennya untuk pemrosesan lebih lanjut. Penggunaan umumnya ditampilkan di sini:
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
...
}
}
Fungsi yang ditentukan oleh functionName secara opsional dapat menerima argumen string (optionalInput). Parameter ini dapat digunakan untuk meneruskan parameter tambahan ke semua metode paralel yang dipanggil oleh 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.
...
}
Jika ingin meneruskan objek konfigurasi JavaScript yang berisi
setelan khusus akun, Anda dapat mengonversinya terlebih dahulu menjadi string menggunakan
JSON.stringify
metode:
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.
...
}
Fungsi yang ditentukan oleh functionName juga dapat menampilkan string, bukan an
objek, melalui
JSON.stringify:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
Nilai yang ditampilkan diteruskan ke fungsi callback dalam daftar
ExecutionResult
objek. Jika Anda menampilkan string JSON dari fungsi, Anda dapat mengonversinya kembali menjadi objek JavaScript menggunakan
JSON.parse
metode:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
Metode
executeInParallel
beroperasi pada maksimal 50
accounts,
sehingga Anda harus menerapkan batasan sendiri untuk membatasi jumlah
akun yang diambil oleh skrip Anda. Anda dapat menggunakan metode
withLimit
atau
withIds
dari class
ManagedAccountSelector
untuk membatasi jumlah akun yang diambil oleh skrip Anda.
Batas waktu eksekusi
Lihat dokumentasi batas untuk mengetahui detail tentang batas waktu eksekusi skrip Pengelola Iklan.