Tập lệnh Ad Manager

Lớp AdsManagerApp trong tập lệnh Google Ads cho phép bạn quản lý các tài khoản được liên kết trong Tài khoản người quản lý của bạn. Bạn có thể quản lý tất cả tài khoản nhà quảng cáo thông qua một tập lệnh duy nhất thay vì tạo tập lệnh riêng cho từng tài khoản.

Truy xuất danh sách tài khoản

Bạn có thể truy xuất các tài khoản trong tài khoản người quản lý bằng phương thức accounts, ví dụ:

const accountSelector = AdsManagerApp.accounts()
    .withCondition('customer_client.descriptive_name = "My Account"');

const accountIterator = accountSelector.get();

Có một số hạn chế đối với các tài khoản có thể truy xuất:

  • Bạn không thể truy xuất tài khoản người quản lý nếu có hệ phân cấp nhiều cấp. Bạn chỉ có thể chọn tài khoản khách hàng.
  • Theo mặc định, những tài khoản đã đóng, bị huỷ và bị tạm ngưng sẽ không được trả về. Bạn có thể ghi đè hành vi này bằng cách gọi withCondition chỉ định một bộ lọc khác cho customer_client.status.

Lệnh gọi accounts truy xuất danh sách tất cả tài khoản khách hàng trong hệ phân cấp tài khoản người quản lý theo mặc định. Bạn có thể sử dụng phương thức withLimit của lớp ManagedAccountSelector để hạn chế số lượng tài khoản mà tập lệnh của bạn truy xuất. Một cách khác là chọn tài khoản theo mã khách hàng bằng phương thức withIds:

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

Làm việc trên tài khoản khách hàng

Sau khi truy xuất các tài khoản khách hàng, bạn có thể lặp lại qua các tài khoản đó bằng các phương thức hasNextnext của trình lặp. Bạn cần sử dụng phương thức select để chuyển ngữ cảnh thực thi sang tài khoản khách hàng. Sau khi bạn chọn một tài khoản khách hàng, mọi lệnh gọi API khác sẽ áp dụng cho tài khoản khách hàng cho đến khi bạn chọn rõ ràng một tài khoản khác:

// 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
  ...
}

Làm việc trên các tài khoản song song

Tập lệnh Google Ads cho phép bạn vận hành song song trên nhiều tài khoản khách hàng bằng phương thức executeInParallel của lớp ManagedAccountSelector. Phương thức executeInParallel có chữ ký sau:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

Phương thức executeInParallel thực thi một hàm do functionName chỉ định trên mỗi ManagedAccountManagedAccountSelector khớp. Sau khi tất cả tài khoản đã được xử lý, hàm callback (nếu do optionalCallbackFunctionName chỉ định) sẽ được thực thi một lần và truyền một danh sách các đối tượng ExecutionResult làm đối số để tiếp tục xử lý. Cách sử dụng thông thường như sau:

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
    ...
  }
}

Hàm do functionName chỉ định có thể tuỳ ý chấp nhận một đối số chuỗi (optionalInput). Bạn có thể dùng tham số này để truyền một tham số bổ sung đến tất cả các phương thức song song do executeInParallel gọi:

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.
  ...
}

Nếu muốn chuyển một đối tượng cấu hình JavaScript chứa các chế độ cài đặt dành riêng cho tài khoản, trước tiên, bạn có thể chuyển đổi đối tượng đó thành một chuỗi bằng phương thức 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.
  ...
}

Hàm do functionName chỉ định cũng có thể trả về một chuỗi thay vì một đối tượng thông qua JSON.stringify:

function processClientAccount() {
  ...
  const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
  return JSON.stringify(jsonObj);
}

Các giá trị trả về được chuyển vào hàm callback trong danh sách các đối tượng ExecutionResult. Nếu trả về một chuỗi JSON qua hàm, bạn có thể chuyển đổi chuỗi đó trở lại thành đối tượng JavaScript bằng phương thức JSON.parse:

function callbackFunctionName(results) {
  for (var i = 0; i < results.length; i++) {
    var resultObj = JSON.parse(results[i].getReturnValue());
  }
}

Phương thức executeInParallel hoạt động trên tối đa 50 accounts, vì vậy, bạn sẽ phải triển khai các hạn chế của riêng mình để giới hạn số lượng tài khoản mà tập lệnh của bạn truy xuất. Bạn có thể sử dụng phương thức withLimit hoặc withIds của lớp ManagedAccountSelector để hạn chế số lượng tài khoản mà tập lệnh của bạn truy xuất.

Giới hạn thời gian thực thi

Hãy xem trang này để biết thông tin chi tiết về giới hạn thời gian thực thi tập lệnh trong Trình quản lý Google Ads.