Bozze ed esperimenti di campagna

Gli script Google Ads supportano le bozze e gli esperimenti sulle campagne, che vengono utilizzati per preparare e testare le modifiche alle campagne sulla rete di ricerca e sulla Rete Display.

Questa guida spiega il flusso di lavoro di base per l'utilizzo di bozze ed esperimenti in uno script.

Bozze

Una bozza è un clone di una campagna esistente che non pubblica i propri annunci, ma può essere utilizzata per preparare le modifiche senza modificare la campagna originale. Le modifiche preparate possono essere applicate alla campagna di base.

Crea una bozza

Una bozza viene creata da una campagna di base esistente utilizzando un DraftBuilder e fornendo un nome univoco. La campagna di base deve essere una campagna sulla rete di ricerca, sulla rete di ricerca con espansione alla Rete Display o campagna display (esclusa la campagna per app mobile sulla Rete Display) e non deve avere un budget condiviso.

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() restituisce un DraftOperation, un'operazione tipica negli script. Per maggiori dettagli, consulta la nostra guida ai builder.

Una draft è identificata in modo univoco dalla combinazione dell'ID campagna di base e dell'ID della bozza. Per ulteriori informazioni, consulta DraftSelector.withIds().

Provisioning della bozza di campagna

Un oggetto draft mette in relazione una campagna di base e una bozza di campagna. Per preparare gli aggiornamenti alla campagna di base, devi propagare le modifiche tramite la bozza di campagna.

Una bozza di campagna, come qualsiasi altra campagna, ha metodi per ottenere e impostare i suoi vari attributi, come criteri, gruppi di annunci, offerte e annunci.

const draftCampaign = draft.getDraftCampaign();

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

I controlli delle norme relative agli annunci vengono eseguiti per una bozza di campagna come per la campagna di base. Non potrai eseguire un esperimento da una bozza di campagna con annunci che violano le norme.

Esegui la bozza

Dopo aver eseguito il provisioning della bozza di campagna, puoi eseguire una delle seguenti operazioni:

  1. Se non vuoi utilizzare le modifiche, puoi semplicemente rimuovere la bozza. La rimozione della bozza è irreversibile, ma può comunque essere visualizzata in Tutte le bozze nella scheda Bozze dell'interfaccia utente di Google Ads.

        draft.remove();
    
  2. Se decidi di mantenere le modifiche apportate alla bozza, puoi procedere e applicarle:

        draft.startApplying();
    

    Questo metodo avvia il processo di applicazione degli aggiornamenti alla campagna di base, quindi la bozza avrà lo stato Applicazione in corso… nell'interfaccia utente di Google Ads. Tuttavia, il metodo non ti invierà una notifica al termine del processo.

  3. Se vuoi testare prima le modifiche, puoi utilizzare la bozza per creare un esperimento.

Esperimenti

Un esperimento esegue una campagna personalizzabile in parallelo alla campagna originale e mostra gli annunci a una percentuale specificata di traffico. In base ai risultati dell'esperimento, puoi applicare le modifiche alla campagna originale, ramificare l'esperimento in una campagna indipendente o abbandonare la campagna sperimentale.

Crea un esperimento

Un experiment è simile a una bozza e viene creato anche da una campagna di base. Puoi creare un experiment con un ExperimentBuilder. In questo modo, verrà creato automaticamente un esperimento con due "gruppi" che rappresentano le diverse parti dell'esperimento. Un gruppo (chiamato gruppo di controllo) conterrà la campagna di base, mentre l'altro (chiamato gruppo sperimentale) conterrà una nuova bozza di campagna che personalizzerai (seguendo i passaggi per la bozza mostrati in precedenza) prima di pianificare l'esperimento.

Quando crei un esperimento, assicurati di impostare tutti i seguenti elementi nel builder:

withCampaign
La campagna su cui vuoi basare l'esperimento.
withTrafficSplitPercent
La quantità di traffico che verrà indirizzata al gruppo sperimentale. Per il 50%, specifica 50.
withStartDate e withEndDate
Specifica la data di inizio e la data di fine della campagna. Specifica nel YYYYMMdd formato.
withType
`SEARCH_CUSTOM` o `DISPLAY_CUSTOM`, a seconda della rete che utilizzi.
SEARCH_CUSTOMDISPLAY_CUSTOM
withSuffix
Specifica un suffisso che verrà aggiunto al nome della campagna sperimentale quando viene creata.
withGoals
Specifica gli obiettivi di questo esperimento. Questo è solo un promemoria degli obiettivi che avevi quando l'hai creato. Un buon valore predefinito è [{metric: 'CLICKS', direction: 'INCREASE'}].

La percentuale di suddivisione del traffico determina la porzione di traffico a cui verranno mostrati gli annunci della campagna sperimentale anziché della campagna di base. Per questo motivo, ogni campagna di base può avere un solo esperimento in esecuzione alla volta.

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

A differenza delle bozze, gli esperimenti sono identificati in modo univoco da un singolo ID. Per ulteriori informazioni, consulta ExperimentSelector.withIds().

Provisioning della campagna sperimentale

Analogamente a una draft, un experiment non è una campagna. Mette invece in relazione la campagna di base, la bozza e la campagna sperimentale. I campi di una campagna sperimentale sono modificabili, con le seguenti eccezioni:

  • nome
  • stato
  • data di inizio
  • data di fine
  • budget
const experimentCampaign = experiment.getExperimentCampaign();

// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");

// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");

È possibile apportare modifiche al nome, alla data di inizio e alla data di fine dell'esperimento, dopodiché verranno propagate alla campagna sperimentale.

// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");

// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);

Per avviare l'esperimento, chiama experiment.startScheduling(). Si tratta di un processo asincrono, poiché deve copiare tutte le impostazioni dalla campagna di base.

Al termine dell'esperimento

Al termine dell'esperimento, hai a disposizione alcune opzioni. Ti consigliamo di lasciare che l'esperimento termini completamente, in modo che smetta di pubblicare annunci, ma tu possa comunque interagire con esso. Un esperimento Terminato può comunque essere rimosso, applicato o promosso e le statistiche sul rendimento della campagna sono ancora accessibili.

experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
  • Se non sei soddisfatto dell'esperimento in base alle statistiche, puoi rimuoverlo, rimuovendo anche la campagna sperimentale. La rimozione dell'esperimento è irreversibile, ma può comunque essere visualizzata in Tutti gli esperimenti nella scheda Esperimenti dell'interfaccia utente di Google Ads.

        experiment.remove();
    
  • Se sei soddisfatto dei risultati dell'esperimento, hai due opzioni:

    1. Puoi iniziare ad applicare le modifiche e, come per le bozze, non riceverai una notifica al termine del processo.

          experiment.startApplying();
      
    2. Puoi stabilire la campagna sperimentale come campagna indipendente e completamente operativa, senza influire sulla campagna di base. Questo processo, noto come promozione, viene completato immediatamente e richiede l'impostazione di un nuovo budget.

          const budget = AdsApp.budgets()
              .withCondition(`campaign_budget.id = ${budgetId}`)
              .get()
              .next();
      
          experiment.graduate(budget);
      

      La nuova campagna non può più condividere un budget con la campagna di base, il che richiede un nuovo budget. Le campagne promosse sono come le campagne normali, in quanto tutti i loro campi sono modificabili e possono fungere da campagna di base per altre bozze ed esperimenti.

Altre considerazioni

Entità di base

L'introduzione di bozze ed esperimenti negli script Google Ads introduce anche la nozione di entità di base. Le campagne sperimentali e le bozze di campagna e i gruppi di annunci in esse contenuti sono distinti dalle campagne di base originali, motivo per cui Campaign e AdGroup ora hanno metodi per accedere alla campagna e al gruppo di annunci di base: getBaseCampaign() e getBaseAdGroup().

Questi metodi restituiscono l'entità chiamante se chiamati da una campagna di base o un gruppo di annunci. Anche le entità all'interno di campagne e gruppi di annunci, come parole chiave e annunci, hanno ricevuto questi metodi.

Per tenere traccia delle entità di base, le campagne hanno ricevuto i isBaseCampaign(), isDraftCampaign() e isExperimentCampaign() metodi.

I nuovi metodi Campaign.draftCampaigns() e Campaign.experimentCampaigns() consentono di accedere a tutte le bozze di campagna e alle campagne sperimentali che hanno la campagna chiamante come campagna di base. Tuttavia, non puoi selezionare le bozze di campagna con CampaignSelector.withCondition(); utilizza invece AdsApp.drafts().

Gestione degli errori

I seguenti metodi che coinvolgono bozze ed esperimenti vengono eseguiti quando lo script viene eseguito, ma potrebbero non riuscire in modo asincrono:

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

Devi attendere per verificare se queste operazioni hanno esito positivo. L'interfaccia utente di Google Ads mostra gli stati Applicato o Attivo dopo il completamento riuscito di startApplying() e startScheduling(), rispettivamente. In caso di errore, indica Impossibile applicare o Impossibile creare, consentendoti di fare clic per visualizzare gli errori.

È anche possibile che alcuni metodi non riescano nella fase di anteprima, ma abbiano esito positivo dopo l'esecuzione, ad esempio dopo la creazione di una bozza:

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

Questa operazione non riuscirà in modalità di anteprima perché non può accedere immediatamente alla bozza di campagna.

Allo stesso modo, la creazione di un esperimento e il tentativo immediato di recuperare la bozza di campagna non riusciranno in modalità di anteprima, poiché la bozza non viene effettivamente creata.

Per questo motivo, controlla i log sotto l'elenco degli script dopo averli eseguiti e procedi con uno script non riuscito in anteprima solo se ritieni che la causa sia dovuta a limitazioni della modalità di anteprima.