Class
AdsManagerApp
di skrip Google Ads memungkinkan Anda mengelola akun yang ditautkan di
Akun Pengelola. Anda dapat mengelola
semua akun pengiklan melalui satu skrip, bukan membuat
skrip terpisah untuk setiap akun.
Mengambil daftar akun
Anda dapat mengambil akun dalam akun pengelola menggunakan
accounts
, 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 akan ditampilkan. Anda
bisa mengganti perilaku ini dengan memanggil
withCondition
yang menentukan filter untukcustomer_client.status
.
Panggilan accounts
mengambil daftar semua akun klien dalam hierarki akun pengelola secara default. Anda dapat menggunakan
withLimit
dari
ManagedAccountSelector
untuk membatasi jumlah akun yang diambil oleh skrip Anda. Lainnya
adalah memilih akun berdasarkan ID pelanggan mereka menggunakan
withIds
berikut:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Kerjakan akun klien
Setelah mengambil akun klien, Anda dapat melakukan iterasi melalui akun tersebut menggunakan metode hasNext
dan next
iterator. Anda perlu menggunakan metode
select
untuk mengalihkan konteks eksekusi ke akun klien. Setelah Anda memilih akun klien, panggilan API lebih lanjut akan diterapkan ke akun klien hingga Anda memilih akun lain secara eksplisit:
// 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
...
}
Mengerjakan akun secara paralel
Skrip Google Ads memungkinkan Anda beroperasi di beberapa akun klien secara paralel, menggunakan
executeInParallel
dari
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 standar ditampilkan di bawah ini:
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
dapat menerima argumen
string (optionalInput
) secara opsional. 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
metode
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.
...
}
Fungsi yang ditentukan oleh functionName
juga dapat menampilkan string, bukan
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 objek ExecutionResult
. Jika menampilkan string JSON dari fungsi, Anda dapat mengonversinya kembali menjadi objek JavaScript menggunakan metode JSON.parse
:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
Tujuan
executeInParallel
metode ini beroperasi pada maksimum 50
accounts
,
jadi Anda harus menerapkan pembatasan
Anda 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 skrip Anda.
Batas waktu eksekusi
Lihat halaman ini untuk mengetahui detail tentang batas waktu eksekusi skrip Ad Manager.