Tập lệnh Google Ads cung cấp một số tính năng quản lý chiến dịch Tối đa hoá hiệu suất. Bạn có thể sử dụng tập lệnh để truy xuất chiến dịch Tối đa hoá hiệu suất, quản lý nhóm thành phần và chạy báo cáo; tuy nhiên, bạn không thể sử dụng tập lệnh để tạo chiến dịch Tối đa hoá hiệu suất. Để thực hiện các thao tác nâng cao hơn, hãy xem phần còn lại của hướng dẫn này. Phần này minh hoạ một phương pháp chung hơn bằng cách sử dụng mutate
.
Truy xuất chiến dịch Tối đa hoá hiệu suất
Bạn có thể sử dụng chiến dịch Tối đa hoá hiệu suất thông qua tập hợp performanceMaxCampaigns
của đối tượng AdsApp
. Bạn có thể truy xuất các tệp đó như bình thường:
const campaignName = "My Performance Max campaign";
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
for (const campaign of campaignIterator) {
...
}
Không giống như một số loại chiến dịch khác, chiến dịch Tối đa hoá hiệu suất không có nhóm quảng cáo hoặc đối tượng quảng cáo mà bạn có thể thấy; mọi thứ liên quan đến các khái niệm này cho các chiến dịch khác sẽ được tự động xử lý cho bạn dựa trên các nhóm thành phần mà bạn đặt.
Thành phần và nhóm thành phần
Quảng cáo của chiến dịch Tối đa hoá hiệu suất chạy dựa trên các thành phần như video, hình ảnh, dòng tiêu đề và nội dung mô tả do bạn cung cấp hoặc được tạo tự động. Để biết thông tin tổng quan đầy đủ về các loại thành phần bắt buộc, hãy xem hướng dẫn về thành phần của chiến dịch Tối đa hoá hiệu suất trong API Google Ads.
Các thành phần của chiến dịch Tối đa hoá hiệu suất được gộp lại với nhau thành một nhóm thành phần và mỗi chiến dịch Tối đa hoá hiệu suất phải có ít nhất một nhóm thành phần. Bạn không thể tạo trực tiếp các nhóm thành phần này trong tập lệnh, nhưng có thể thêm và xoá thành phần khỏi một nhóm thành phần hiện có.
Thêm thành phần vào nhóm thành phần
Trước tiên, hãy tạo thành phần:
const imageUrl = "http://www.example.com/example.png";
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const assetOperation = AdsApp.adAssets().newImageAssetBuilder()
.withName("new asset name")
.withData(imageBlob)
.build();
const imageAsset = assetOperation.getResult();
Sau đó, hãy sử dụng thành phần bạn vừa tạo để thêm thành phần đó vào một nhóm thành phần hiện có:
// First, fetch the Performance Max campaign we want to operate on.
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = '${campaignName}'`)
.get();
let campaign;
if (campaignIterator.hasNext()) {
campaign = campaignIterator.next();
} else {
throw `No campaign found with name ${campaignName}.`
}
// Then, get that campaign's asset groups.
const assetGroupIterator = campaign.assetGroups().get();
// The campaign must have at least one asset group, so we can just assume so here.
const assetGroup = assetGroupIterator.next();
// Add the asset from the previous step.
assetGroup.addAsset(imageAsset, 'MARKETING_IMAGE');
Lưu ý cách bạn phải chỉ định loại tài sản ở bước cuối cùng. Bạn có thể tìm thấy danh sách đầy đủ các loại thành phần trong tài liệu về API Google Ads
Để sử dụng một thành phần hiện có, trước tiên, hãy tạo một bộ chọn thành phần:
const assetSelector = AdsApp.adAssets().assets();
Sau đó, hãy sử dụng bộ lọc withCondition
để thu hẹp thành phần mà bạn muốn thao tác. Hãy xem tài liệu tham khảo AssetSelector
để biết danh sách đầy đủ các tuỳ chọn bộ lọc.
Cuối cùng, hãy tìm nạp trình lặp và lặp lại như với các thực thể khác:
const assetIterator = assetSelector.get();
for (const asset of assetIterator) {
...
}
Thành phần văn bản
Thành phần văn bản hoạt động hơi khác một chút, vì bạn không cần tạo thành phần trước. Bạn chỉ cần chỉ định văn bản thay vì một thành phần và hệ thống sẽ tự động tạo thành phần đó cho bạn. Nếu văn bản đó giống hệt một thành phần văn bản hiện có, thì thành phần hiện có sẽ được sử dụng lại.
Ví dụ: sau đây là cách tạo thành phần dòng tiêu đề:
assetGroup.addAsset('asset text here', 'HEADLINE');
Xoá thành phần khỏi nhóm thành phần
Bạn cũng có thể xoá một thành phần khỏi một nhóm thành phần. Tuy nhiên, hãy lưu ý rằng bạn phải có số lượng tối thiểu của một số loại thành phần để chiến dịch có hiệu lực.
Sau đây là cách xoá thành phần đã thêm trong ví dụ trước:
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
Bạn cũng có thể lấy danh sách thành phần trong một nhóm thành phần nhất định bằng hàm search
:
// The resource name is a unique identifier for this asset group.
const assetGroupName = assetGroup.getResourceName();
results = AdsApp.search(
`SELECT asset.resource_name, asset_group_asset.field_type
FROM asset_group_asset
WHERE asset_group.resource_name = '${assetGroupName}'`
);
Thao tác này sẽ chọn tên tài nguyên của thành phần làm giá trị nhận dạng duy nhất. Bạn cũng có thể chọn các trường khác, chẳng hạn như asset.type
hoặc asset.text_asset.text
để tinh chỉnh thêm kết quả. Sử dụng trình tạo truy vấn cho loại báo cáo này để tạo truy vấn của riêng bạn.
Sau khi bạn có thành phần mục tiêu, hãy gọi remove
trên nhóm thành phần để xoá thành phần đó khỏi nhóm thành phần:
// Let's assume at least one asset is returned. We'll just remove the first
// asset, whatever it is. In your code, customize this to choose the right asset.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);