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ý. 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 một 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ể được truy xuất:

  • Không thể truy xuất tài khoản người quản lý nếu bạn có tài khoản nhiều cấp thứ bậc. Bạn chỉ có thể chọn tài khoản khách hàng.
  • Theo mặc định, tài khoản đã đóng, bị huỷ và bị tạm ngưng sẽ không được trả lại. 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 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 truy xuất. Một lựa chọn khác là chọn các tài khoản theo mã khách hàng bằng cách sử dụ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 các tài khoản đó bằng cách sử dụng 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 đổi 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 ứng dụng, mọi lệnh gọi API khác sẽ áp dụng cho tài khoản ứng dụng đó cho đến khi bạn chọn một tài khoản khác một cách rõ ràng:

// 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 nhiều tài khoản cùng lúc

Tập lệnh Google Ads cho phép bạn hoạt động song song trên nhiều tài khoản khách hàng bằng cách sử dụ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, được thực thi một lần, truyền một danh sách trong số ExecutionResult làm đối số cho bất kỳ quá trình xử lý nào sau này. Cách sử dụng thông thường được hiển thị bên dưới:

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

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 ExecutionResult . Nếu trả về một chuỗi JSON từ 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());
  }
}

Chiến lược phát hành đĩa đơn executeInParallel phương thức hoạt động trên tối đa 50 accounts! do đó, 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 mà tập lệnh của bạn truy xuất. Bạn có thể sử dụng withLimit hoặc withIds phương thức của ManagedAccountSelector để giới hạn 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 Ad Manager.