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 thay vì tạo một tập lệnh riêng cho mỗi 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 những 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 chocustomer_client.status
.
Theo mặc định, lệnh gọi accounts
sẽ truy xuất danh sách tất cả tài khoản khách hàng trong hệ thống phân cấp tài khoản người quản lý. 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 cách khác là chọn các 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 các tài khoản đó bằng cách sử dụng phương thức hasNext
và next
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 các tài khoản song song
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 ManagedAccount
mà ManagedAccountSelector
khớp. Sau khi tất cả tài khoản đã được xử lý, hàm gọi lại (nếu được optionalCallbackFunctionName
chỉ định) sẽ được thực thi một lần, truyền danh sách các đối tượng ExecutionResult
làm đối số để xử lý thêm. 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 muốn truyề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ị được trả về được truyền vào hàm gọi lại trong danh sách các đối tượng 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());
}
}
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 quy tắ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 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 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.