Chiến dịch Tối đa hoá hiệu suất sử dụng AdsApp

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);