Skrip Google Ads mendukung draf dan eksperimen kampanye, yang digunakan untuk menyiapkan dan menguji perubahan pada kampanye Jaringan Penelusuran dan Jaringan Display.
Draf adalah duplikat dari kampanye yang ada yang tidak akan menayangkan iklannya sendiri, tetapi dapat digunakan untuk melakukan perubahan bertahap tanpa mengubah kampanye aslinya. Perubahan bertahap tersebut kemudian dapat diterapkan ke kampanye dasar.
Eksperimen menjalankan kampanye yang dapat disesuaikan secara paralel dengan kampanye asli, dan menampilkan iklan pada persentase traffic tertentu. Berdasarkan hasil eksperimen, Anda dapat menerapkan perubahan pada kampanye asli, mengalihkan eksperimen ke kampanye independen, atau meninggalkan kampanye eksperimen.
Panduan ini menjelaskan alur kerja dasar untuk bekerja dengan draf dan eksperimen dalam skrip.
Draf
Membuat draf
Draf dibuat dari kampanye dasar yang sudah ada menggunakan
DraftBuilder
dan memberikan nama yang unik. Kampanye dasar harus berupa kampanye Penelusuran, Jaringan Penelusuran
dengan Ekspansi Display, atau kampanye Display (kecuali kampanye Aplikasi
Seluler untuk Jaringan Display), dan tidak boleh memiliki anggaran bersama.
const campaign = AdsApp.campaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get()
.next();
const draftBuilder = campaign.newDraftBuilder()
.withName("INSERT_DRAFT_NAME_HERE")
.build();
const draft = draftBuilder.getResult();
DraftBuilder.build()
menampilkan
DraftOperation
,
operasi standar di Scripts. Lihat panduan untuk
builder kami untuk detail selengkapnya.
draft
diidentifikasi secara unik dengan kombinasi ID kampanye dasarnya dan ID drafnya. Lihat
DraftSelector.withIds()
untuk mengetahui informasi selengkapnya.
Menyediakan kampanye draf
Objek draft
menghubungkan kampanye dasar dan draf kampanye. Untuk melakukan update pada kampanye dasar, Anda perlu menerapkan perubahan melalui draf kampanye.
Kampanye draf, seperti kampanye lainnya, memiliki metode untuk mendapatkan dan menetapkan berbagai atribut seperti kriteria, grup iklan, bid, dan iklan.
const draftCampaign = draft.getDraftCampaign();
draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");
Perhatikan bahwa pemeriksaan kebijakan iklan dilakukan untuk draf kampanye sama seperti untuk kampanye dasar. Anda tidak akan dapat menjalankan eksperimen dari draf kampanye yang berisi iklan yang melanggar kebijakan.
Melaksanakan draf
Setelah menyediakan kampanye draf, Anda dapat melakukan salah satu hal berikut:
Jika tidak ingin menggunakan perubahan, Anda dapat menghapus draf. Penghapusan draf tidak dapat dibatalkan, tetapi masih dapat dilihat di bagian Semua draf di tab draf UI Google Ads.
draft.remove();
Jika memutuskan untuk menyimpan perubahan yang telah dibuat dalam draf, Anda dapat melanjutkan dan menerapkannya:
draft.startApplying();
Metode ini memulai proses penerapan pembaruan ke kampanye dasar, sehingga draf akan berstatus Sedang diterapkan... di UI Google Ads. Namun, metode ini tidak akan memberi tahu Anda ketika proses selesai.
Jika Anda ingin menguji perubahan terlebih dahulu, Anda dapat menggunakan draf untuk membuat eksperimen.
Eksperimen
Membuat eksperimen
experiment
mirip dengan draf, dan juga dibuat dari kampanye
dasar. Anda membuat experiment
dengan
ExperimentBuilder
.
Tindakan ini akan otomatis membuat eksperimen dengan dua "grup" yang mewakili bagian eksperimen yang berbeda. Satu grup (disebut grup kontrol) akan berisi kampanye dasar, dan grup lainnya (disebut grup perlakuan) akan berisi draf kampanye baru yang akan Anda sesuaikan sesuai langkah-langkah untuk draf di atas sebelum menjadwalkan eksperimen.
Saat membuat eksperimen, pastikan untuk menetapkan semua hal berikut di builder:
withCampaign
- Kampanye yang Anda inginkan menjadi dasar eksperimen.
withTrafficSplitPercent
- Berapa banyak traffic yang akan masuk ke grup eksperimen. Untuk 50%, tentukan
50
. withStartDate
danwithEndDate
- Menentukan tanggal mulai dan akhir kampanye. Tentukan dalam format
YYYYMMdd
. withType
SEARCH_CUSTOM
atauDISPLAY_CUSTOM
, bergantung pada jaringan yang Anda gunakan.withSuffix
- Menentukan akhiran yang akan ditambahkan ke nama kampanye perlakuan saat dibuat.
withGoals
- Menentukan sasaran untuk eksperimen ini. Ini hanyalah pengingat bagi diri Anda sendiri,
apa tujuan Anda saat membuatnya. Nilai default yang baik adalah
[{metric: 'CLICKS', direction: 'INCREASE'}]
.
Persentase pemisahan traffic menentukan bagian traffic yang akan menerima tayangan iklan dari kampanye eksperimen, bukan kampanye dasar. Karena alasan ini, setiap kampanye dasar hanya dapat memiliki satu eksperimen yang berjalan dalam satu waktu.
const experiment = AdsApp.newExperimentBuilder()
.withCampaign(campaign)
.withTrafficSplitPercent(50)
.withStartDate("20230501")
.withEndDate("20230601")
.withType("SEARCH_CUSTOM")
.withSuffix("experiment")
.withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
.build();
// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();
Tidak seperti draf, eksperimen diidentifikasi secara unik oleh satu ID. Lihat ExperimentSelector.withIds()
untuk mengetahui informasi selengkapnya.
Menyediakan kampanye eksperimen
Serupa dengan draft
, experiment
itu sendiri bukanlah kampanye. Namun, laporan ini mengaitkan kampanye dasar, draf, dan kampanye eksperimen. Kolom kampanye eksperimen dapat diubah, dengan pengecualian berikut:
- name
- status
- tanggal mulai
- tanggal akhir
- anggaran
const experimentCampaign = experiment.getExperimentCampaign();
// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");
// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");
Perubahan pada nama, tanggal mulai, dan tanggal akhir dapat dilakukan pada eksperimen. Setelah itu, perubahan tersebut akan diterapkan ke kampanye eksperimen.
// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");
// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);
Untuk memulai eksperimen, panggil experiment.startScheduling()
. Ini adalah
proses asinkron, karena harus menyalin semua setelan dari kampanye dasar.
Setelah eksperimen berakhir
Saat eksperimen selesai, Anda memiliki beberapa opsi. Sebaiknya biarkan eksperimen selesai sepenuhnya sehingga eksperimen berhenti menayangkan iklan, tetapi Anda masih dapat berinteraksi dengannya. Eksperimen yang Selesai masih dapat dihapus, diterapkan, atau lulus, dan statistik performa kampanyenya masih dapat diakses.
experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
Jika tidak puas dengan eksperimen berdasarkan statistik, Anda dapat menghapus eksperimen, yang juga akan menghapus kampanye eksperimen. Penghapusan eksperimen tidak dapat dibatalkan, tetapi masih dapat dilihat di bagian Semua eksperimen di tab eksperimen pada UI Google Ads.
experiment.remove();
Jika Anda puas dengan hasil eksperimen, Anda memiliki dua opsi:
Anda dapat mulai menerapkan perubahan, dan seperti pada draf, Anda tidak akan diberi tahu saat proses selesai.
experiment.startApplying();
Anda dapat menetapkan kampanye eksperimen sebagai kampanye independen yang beroperasi sepenuhnya, tanpa memengaruhi kampanye dasar. Proses ini, yang dikenal sebagai kelulusan, segera selesai dan memerlukan anggaran baru untuk ditetapkan.
const budget = AdsApp.budgets() .withCondition(`campaign_budget.id = ${budgetId}`) .get() .next(); experiment.graduate(budget);
Kampanye baru tidak dapat lagi berbagi anggaran dengan kampanye dasar, sehingga memerlukan anggaran baru. Kampanye bertahap sama seperti kampanye biasa karena semua kolomnya dapat diubah dan dapat berfungsi sebagai kampanye dasar untuk lebih banyak draf dan eksperimen.
Pertimbangan lainnya
Entitas dasar
Pengenalan draf dan eksperimen ke skrip Google Ads juga memperkenalkan
gagasan entitas dasar. Kampanye draf dan eksperimen serta grup iklan di dalamnya
berbeda dari kampanye dasar aslinya, itulah sebabnya
Campaign
dan AdGroup
kini memiliki metode untuk mengakses kampanye dasar dan grup iklan mereka:
getBaseCampaign()
dan getBaseAdGroup()
.
Metode ini menampilkan entity panggilan jika dipanggil oleh kampanye dasar atau grup iklan. Entitas dalam kampanye dan grup iklan, seperti kata kunci dan iklan, juga telah diberi metode tersebut.
Untuk membantu memantau entity dasar, kampanye telah diberi metode
isBaseCampaign()
,
isDraftCampaign()
,
dan
isExperimentCampaign()
.
Metode
Campaign.draftCampaigns()
dan
Campaign.experimentCampaigns()
baru memungkinkan Anda mengakses semua kampanye draf dan eksperimen yang memiliki
kampanye panggilan sebagai kampanye dasarnya. Namun, Anda tidak dapat memilih draf
kampanye dengan
CampaignSelector.withCondition()
.
Gunakan
AdsApp.drafts()
sebagai gantinya.
Penanganan error
Metode yang melibatkan draf dan eksperimen berikut akan dilanjutkan saat skrip dijalankan, tetapi mungkin gagal secara asinkron:
Draft.startApplying()
Experiment.startApplying()
Experiment.startScheduling()
Anda harus menunggu untuk memeriksa apakah operasi ini berhasil. UI Google Ads menampilkan status Applied atau Active setelah berhasil menyelesaikan startApplying()
dan startScheduling()
. Dan, ini menunjukkan
Unable to apply atau Unable to create setelah gagal, sehingga Anda dapat mengklik untuk
melihat error.
Ada kemungkinan juga bahwa beberapa metode gagal dalam tahap pratinjau, tetapi berhasil setelah dijalankan; misalnya, setelah membuat draf:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
Tindakan ini akan gagal dalam mode pratinjau karena tidak dapat langsung mengakses draf kampanye.
Demikian pula, membuat eksperimen dan langsung mencoba mengambil kampanye drafnya akan gagal dalam mode pratinjau, karena draf sebenarnya tidak dibuat.
Karena alasan ini, periksa log di bawah daftar skrip Anda setelah menjalankannya, dan lanjutkan dengan skrip yang gagal dalam pratinjau hanya jika Anda yakin penyebabnya adalah pembatasan dalam mode pratinjau.