Kampanye Performa Maksimal menggunakan AdsApp

Cara terbaik untuk mengelola kampanye Performa Maksimal dengan skrip Google Ads adalah menggunakan strategi mutate untuk memberikan pengelolaan langsung kampanye Performa Maksimal Anda. Kampanye Performa Maksimal hanya dapat dibuat dengan fungsi mutate. Namun, Anda juga dapat menggunakan objek AdsApp lainnya untuk mengambil kampanye Performa Maksimal, mengelola grup aset, dan menjalankan laporan jika Anda mau.

Pengambilan kampanye Performa Maksimal

Kampanye Performa Maksimal tersedia melalui koleksi performanceMaxCampaigns dari objek AdsApp. Anda dapat mengambilnya seperti biasa:

const campaignName = "My Performance Max campaign";

const campaignIterator = AdsApp.performanceMaxCampaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get();

for (const campaign of campaignIterator) {
  ...
}

Tidak seperti beberapa jenis kampanye lainnya, kampanye Performa Maksimal tidak memiliki grup iklan atau objek iklan yang dapat Anda lihat; semua hal yang terkait dengan konsep ini untuk kampanye lain ditangani secara otomatis untuk Anda berdasarkan grup aset yang Anda tetapkan.

Aset dan grup aset

Iklan dari kampanye Performa Maksimal berjalan dari aset seperti video, gambar, judul, dan deskripsi—baik yang Anda berikan maupun yang dibuat secara otomatis. Untuk mengetahui ringkasan lengkap tentang jenis aset yang diperlukan, lihat panduan aset Performa Maksimal Google Ads API.

Aset untuk kampanye Performa Maksimal dikelompokkan ke dalam grup aset, dan setiap kampanye Performa Maksimal harus memiliki minimal satu grup aset. Anda tidak dapat membuat grup aset ini langsung dalam skrip, tetapi Anda dapat menambahkan dan menghapus aset dari grup aset yang ada.

Menambahkan aset ke grup aset

Pertama, buat aset:

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

Kemudian, menggunakan aset yang baru saja Anda buat, tambahkan aset tersebut ke grup aset yang ada:

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

Perhatikan bagaimana Anda harus menentukan jenis aset pada langkah terakhir. Anda dapat menemukan daftar lengkap jenis aset di dokumentasi Google Ads API

Untuk menggunakan aset yang ada, buat pemilih aset terlebih dahulu:

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

Kemudian, gunakan filter withCondition untuk mempersempit aset yang ingin Anda operasikan. Lihat AssetSelector untuk mengetahui daftar lengkap opsi filter.

Terakhir, ambil iterator dan lakukan iterasi seperti pada entity lainnya:

const assetIterator = assetSelector.get();

for (const asset of assetIterator) {
   ...
}

Aset teks

Aset teks berfungsi sedikit berbeda, karena Anda tidak perlu membuat aset terlebih dahulu. Anda hanya perlu menentukan teks, bukan aset, dan sistem akan membuat aset untuk Anda secara otomatis. Jika teks tersebut merupakan duplikat persis dari aset teks yang ada, aset yang ada akan digunakan kembali.

Misalnya, berikut cara membuat aset judul:

assetGroup.addAsset('asset text here', 'HEADLINE');

Menghapus aset dari grup aset

Anda juga dapat menghapus aset dari grup aset; namun, perlu diingat bahwa setiap grup aset harus memiliki jumlah minimum aset tertentu agar kampanye valid.

Berikut cara menghapus aset yang ditambahkan dalam contoh sebelumnya:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Anda juga dapat memperoleh daftar aset dalam grup aset tertentu dengan fungsi 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}'`
);

Tindakan ini akan memilih nama resource aset sebagai ID uniknya. Anda juga dapat memilih kolom lain, seperti asset.type atau asset.text_asset.text, untuk lebih menyaring hasil. Gunakan pembuat kueri untuk jenis laporan ini guna membuat kueri Anda sendiri.

Setelah Anda memiliki aset target, panggil remove di grup aset untuk menghapus aset dari grup aset:

// This example assumes at least one asset is returned. We'll remove the first
// asset, whatever it is. In your code, customize this to choose the right
// asset to be removed.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);