Skrip Ads Manager

Class AdsManagerApp dalam skrip Google Ads memungkinkan Anda mengelola akun yang ditautkan dalam 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 metode 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 multilevel. Hanya akun klien yang dapat dipilih.
  • Secara default, akun yang ditutup, dibatalkan, dan ditangguhkan tidak akan ditampilkan. Anda dapat mengganti perilaku ini dengan memanggil withCondition yang menentukan filter berbeda untuk customer_client.status.

Panggilan accounts akan mengambil daftar semua akun klien dalam 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 metode withIds:

// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
    .withIds(['123-456-7890', '234-567-8901', '345-678-9012']);

Bekerja pada akun klien

Setelah mengambil akun klien tersebut, Anda dapat melakukan iterasi menggunakan metode hasNext dan next dari iterator tersebut. Anda harus menggunakan metode select untuk mengalihkan konteks eksekusi ke akun klien. Setelah memilih akun klien, panggilan API lainnya akan berlaku untuk 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 metode executeInParallel dari class ManagedAccountSelector. Metode executeInParallel memiliki tanda tangan berikut:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

Metode executeInParallel mengeksekusi fungsi yang ditentukan oleh functionName pada setiap ManagedAccount yang cocok dengan ManagedAccountSelector. Setelah semua akun diproses, fungsi callback, jika ditentukan oleh optionalCallbackFunctionName, akan dijalankan 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 secara opsional 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 terlebih dahulu mengonversinya 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 akan 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());
  }
}

Metode executeInParallel beroperasi pada maksimum 50 accounts, sehingga Anda harus menerapkan batasan 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 oleh skrip Anda.

Batas waktu eksekusi

Lihat halaman ini untuk mengetahui detail tentang batas waktu eksekusi skrip Ads Manager.