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 chocustomer_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 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 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 ManagedAccount
mà ManagedAccountSelector
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.