Tập lệnh Google Ads hỗ trợ một số hoạt động quản lý chiến dịch Tối đa hoá hiệu suất
chiến dịch. Bạn có thể sử dụng
các 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. Người nhận
thực hiện thêm các thao tác nâng cao, hãy xem phần còn lại của hướng dẫn này.
minh hoạ cách tiếp cận tổng quát 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
Chiến dịch Tối đa hoá hiệu suất có sẵn thông qua
performanceMaxCampaigns
bộ sưu tập của AdsApp
. Bạn có thể truy xuất các mã này 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ó quảng cáo các nhóm 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 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 thiết lập.
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 đã hết thành phần như video hình ảnh, dòng tiêu đề và nội dung mô tả, do bạn hoặc được tạo tự động. Để có thông tin tổng quan đầy đủ về các loại thành phần bắt buộc, hãy xem thành phần của chiến dịch Tối đa hoá hiệu suất qua API Google Ads hướng dẫn.
Các thành phần của chiến dịch Tối đa hoá hiệu suất được nhóm 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 1 nhóm thành phần. Bạn không thể trực tiếp tạo các nhóm thành phần này trong tập lệnh, nhưng bạn có thể thêm và xoá các 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 thêm thành phần đó vào một nhóm thành phần hiện có bằng thành phần bạn vừa tạo:
// 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');
Xin lưu ý rằng bạn phải chỉ định loại thành phầ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 API Google Ads tài liệu
Để sử dụng 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 đó, dùng bộ lọc withCondition
để thu hẹp những thành phần mà bạn muốn
hoạt động. Xem
AssetSelector
tài liệu tham khảo để 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, ở chỗ bạn không cần phải tạo thành phần trước. Bạn chỉ cần chỉ định văn bản thay vì 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 là bản sao y hệt của 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ụ: dưới đâ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 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 cho một số loại thành phần để chiến dịch có hiệu lực.
Dưới đây là cách xoá thành phần đã được thêm vào trong ví dụ trước:
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
Bạn cũng có thể xem danh sách các thành phần trong một nhóm thành phần nhất định bằng lệnh search
hàm:
// 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 tài sản làm giá trị nhận dạng duy nhất của tài sản đó. Bạn có thể
chọn các trường khác, ví dụ 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 báo cáo này
nhập để 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);