Chiến dịch tối đa hoá hiệu suất

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. 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.

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 bộ sưu tập performanceMaxCampaigns của đối tượng AdsApp. Bạn có thể truy xuất các tệp 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ó nhóm quảng cáo hoặc đối tượng quảng cáo mà bạn có thể nhìn 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 đều được tự động xử lý cho bạn dựa trên những 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 từ các thành phần như video, hình ảnh, dòng tiêu đề và nội dung mô tả. Các thành phần này 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 cần thiết, 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 API Google Ads.

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 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á các thành phần khỏi 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 nội dung:

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 bạn vừa tạo vào một nhóm thành phần hiện có bằng cách thêm thành phần đó:

// 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 ý rằng bạn phải chỉ định loại tài sản trong bước cuối cùng như thế nào. Bạn có thể xem danh sách đầy đủ các loại thành phần trong tài liệu về API Google Ads

Để sử dụng thành phần hiện có, trước tiên hãy tạo bộ chọn thành phần:

const assetSelector = AdsApp.adAssets().assets();

Sau đó, sử dụng bộ lọc withCondition để thu hẹp những thành phần mà bạn muốn điều hành. Hãy xem tài liệu tham khảo về 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 biến 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, vì bạn không cần tạo trước thành phần. 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 trùng lặp hoàn toàn với 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 một 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, xin lưu ý rằng bạn phải có số lượng tối thiểu các loại thành phần nhất định thì chiến dịch mới hợp lệ.

Dưới đây là cách xoá thành phần đã được thêm 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 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}'`
);

Khi đó, tên tài nguyên của tài sản sẽ được chọ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);

Báo cáo

Chiến dịch Tối đa hoá hiệu suất được báo cáo trong tài nguyên campaign cùng với các loại chiến dịch khác. Để bắt đầu, bạn có thể sử dụng những gợi ý như sau:

SELECT
  campaign.id,
  campaign.url_expansion_opt_out,
  campaign.status,
  campaign.bidding_strategy_type,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  metrics.conversions,
  metrics.all_conversions
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND metrics.clicks > 0

Đừng chọn bất kỳ trường ad_group nào vì chiến dịch Tối đa hoá hiệu suất không có nhóm quảng cáo nào, nên sẽ không có nhóm quảng cáo nào được trả về. Ngoài ra, asset_group cũng không thể được phân đoạn. Tìm hiểu thêm về báo cáo trong hướng dẫn về báo cáo.

Bạn cũng có thể báo cáo trực tiếp về nhóm thành phần. Để biết thêm thông tin về cách hoàn tất, hãy xem hướng dẫn về API Google Ads về chủ đề này. Bạn có thể lấy bất kỳ truy vấn nào bạn thấy ở đó và chạy truy vấn đó thông qua phương thức AdsApp.search trong tập lệnh Google Ads để nhận được kết quả tương tự.