Draf dan Eksperimen Kampanye

Skrip Google Ads mendukung draf dan eksperimen kampanye, yang digunakan untuk menyiapkan dan menguji perubahan pada kampanye Jaringan Penelusuran dan kampanye Jaringan Display.

Panduan ini menjelaskan alur kerja dasar untuk menggunakan draf dan eksperimen dalam skrip.

Draf

Draf adalah klon kampanye yang ada dan tidak akan menayangkan iklannya sendiri, tetapi dapat digunakan untuk melakukan perubahan tanpa mengubah kampanye asli. Perubahan yang dilakukan kemudian dapat diterapkan ke kampanye dasar.

Membuat draf

Draf dibuat dari kampanye dasar yang ada menggunakan DraftBuilder dan memberikan nama yang unik. Kampanye dasar harus berupa kampanye Penelusuran, kampanye Jaringan Penelusuran dengan Perluasan Display, atau kampanye Display (tidak termasuk 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 umum dalam skrip. Lihat panduan kami tentang builder untuk mengetahui detail selengkapnya.

draft diidentifikasi secara unik berdasarkan kombinasi ID kampanye dasar dan ID draf. Lihat DraftSelector.withIds() untuk mengetahui informasi selengkapnya.

Menyediakan kampanye draf

Objek draft menghubungkan kampanye dasar dan kampanye draf. Untuk melakukan update pada kampanye dasar, Anda menyebarkan perubahan melalui kampanye draf.

Kampanye draf, seperti kampanye lainnya, memiliki metode untuk mendapatkan dan menetapkan berbagai atributnya seperti kriteria, grup iklan, bid, dan iklan.

const draftCampaign = draft.getDraftCampaign();

draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");

Pemeriksaan kebijakan iklan dilakukan untuk kampanye draf seperti halnya untuk kampanye dasar. Anda tidak akan dapat menjalankan eksperimen dari kampanye draf yang memiliki iklan yang melanggar kebijakan.

Menjalankan draf

Setelah menyediakan kampanye draf, Anda dapat melakukan salah satu hal berikut:

  1. Jika tidak ingin menggunakan perubahan, Anda dapat menghapus draf. Penghapusan draf tidak dapat dibatalkan, tetapi draf tersebut masih dapat dilihat di bagian Semua draf di tab draf UI Google Ads.

        draft.remove();
    
  2. Jika memutuskan untuk menyimpan perubahan yang Anda buat dalam draf, Anda dapat langsung menerapkannya:

        draft.startApplying();
    

    Metode ini memulai proses penerapan update ke kampanye dasar, sehingga draf akan memiliki status Menerapkan... di UI Google Ads. Namun, metode ini tidak akan memberi tahu Anda saat proses selesai.

  3. Jika ingin menguji perubahan terlebih dahulu, Anda dapat menggunakan draf untuk membuat eksperimen.

Eksperimen

Eksperimen menjalankan kampanye yang dapat disesuaikan secara paralel dengan kampanye asli, dan menampilkan iklan ke persentase traffic yang ditentukan. Berdasarkan hasil eksperimen, Anda dapat menerapkan perubahan ke kampanye asli, membuat cabang eksperimen ke kampanye independen, atau menghentikan kampanye 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 kampanye draf baru yang akan Anda sesuaikan (sesuai langkah-langkah untuk draf yang ditampilkan sebelumnya) sebelum menjadwalkan eksperimen.

Saat membuat eksperimen, pastikan untuk menetapkan semua hal berikut di builder:

withCampaign
Kampanye yang ingin Anda jadikan dasar eksperimen.
withTrafficSplitPercent
Jumlah traffic yang akan masuk ke grup eksperimen. Untuk 50%, tentukan 50.
withStartDate dan withEndDate
Menentukan tanggal mulai dan akhir kampanye. Tentukan dalam format YYYYMMdd.
withType
SEARCH_CUSTOM`SEARCH_CUSTOM` atau DISPLAY_CUSTOM`DISPLAY_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 hanya pengingat untuk diri Anda sendiri tentang sasaran Anda saat membuatnya. Nilai default yang baik adalah [{metric: 'CLICKS', direction: 'INCREASE'}].

Persentase pemisahan traffic menentukan bagian traffic yang akan menampilkan iklan dari kampanye eksperimen, bukan kampanye dasar. Oleh karena itu, 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 berdasarkan satu ID. Lihat ExperimentSelector.withIds() untuk mengetahui informasi selengkapnya.

Menyediakan kampanye eksperimen

Mirip dengan draft, experiment itu sendiri bukanlah kampanye. Namun, eksperimen menghubungkan kampanye dasar, draf, dan kampanye eksperimen. Kolom kampanye eksperimen dapat diubah, dengan pengecualian berikut:

  • nama
  • 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 disebarkan 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

Setelah eksperimen selesai, Anda memiliki beberapa opsi. Sebaiknya biarkan eksperimen selesai sepenuhnya sehingga eksperimen akan berhenti menayangkan iklan, tetapi Anda masih dapat berinteraksi dengannya. Eksperimen yang Selesai masih dapat dihapus, diterapkan, atau dihentikan, 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 eksperimen tersebut masih dapat dilihat di bagian Semua eksperimen di tab eksperimen UI Google Ads.

        experiment.remove();
    
  • Jika puas dengan hasil eksperimen, Anda memiliki dua opsi:

    1. Anda dapat mulai menerapkan perubahan dan, seperti halnya draf, Anda tidak akan diberi tahu saat proses selesai.

          experiment.startApplying();
      
    2. Anda dapat menetapkan kampanye eksperimen sebagai kampanye independen yang beroperasi penuh, tanpa memengaruhi kampanye dasar. Proses ini, yang dikenal sebagai penghentian, akan segera selesai dan memerlukan penetapan anggaran baru.

          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 yang dihentikan sama seperti kampanye normal 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 konsep entitas dasar. Kampanye draf dan kampanye 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: getBaseCampaign() dan getBaseAdGroup().

Metode ini menampilkan entitas 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 melacak entitas dasar, kampanye telah diberi metode isBaseCampaign(), isDraftCampaign(), dan isExperimentCampaign().

Metode Campaign.draftCampaigns() dan Campaign.experimentCampaigns() yang baru memungkinkan Anda mengakses semua kampanye draf dan eksperimen yang memiliki kampanye panggilan sebagai kampanye dasarnya. Namun, Anda tidak dapat memilih kampanye draf dengan CampaignSelector.withCondition(); gunakan AdsApp.drafts().

Penanganan error

Metode berikut yang melibatkan draf dan eksperimen 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 Diterapkan atau Aktif setelah berhasil menyelesaikan startApplying() dan startScheduling(), masing-masing. Selain itu, UI akan menunjukkan Tidak dapat diterapkan atau Tidak dapat dibuat jika terjadi kegagalan, sehingga Anda dapat mengklik untuk melihat error.

Ada juga kemungkinan 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.

Hal ini akan gagal dalam mode pratinjau karena tidak dapat langsung mengakses kampanye draf.

Demikian pula, membuat eksperimen dan langsung mencoba mengambil kampanye drafnya akan gagal dalam mode pratinjau, karena draf tidak benar-benar dibuat.

Oleh karena itu, periksa log di bawah daftar skrip Anda setelah menjalankannya, dan lanjutkan dengan skrip yang gagal dalam pratinjau hanya jika Anda yakin penyebabnya adalah karena batasan dalam mode pratinjau.