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 lavorare con 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 temporanee possono poi 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 sulla Rete Display (esclusa la campagna per app mobile per la 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.
Un draft è identificato in modo univoco dalla combinazione del suo ID campagna di base e
dell'ID bozza. Per saperne di più, consulta DraftSelector.withIds().
Esegui il provisioning della bozza di campagna
Un oggetto draft mette in relazione una campagna di base e una bozza di campagna. Per eseguire l'aggiornamento
alla campagna di base, propaga le modifiche tramite la bozza di campagna.
Una campagna bozza, 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 pubblicitarie vengono eseguiti per una bozza di campagna proprio come per la campagna di base. Non potrai eseguire un esperimento da una bozza di campagna che contiene annunci che violano le norme.
Esegui la bozza
Dopo aver eseguito il provisioning della bozza di campagna, puoi eseguire una delle seguenti operazioni:
Se non vuoi utilizzare le modifiche, puoi semplicemente rimuovere la bozza. La rimozione della bozza è irreversibile, ma può comunque essere visualizzata nella sezione Tutte le bozze della scheda Bozze dell'interfaccia utente di Google Ads.
draft.remove();Se decidi di mantenere le modifiche apportate alla bozza, puoi procedere e applicarle:
draft.startApplying();Questo metodo avvia la procedura di applicazione degli aggiornamenti alla campagna di base, in modo che la bozza abbia lo stato Applicazione in corso… nell'interfaccia utente di Google Ads. Tuttavia, il metodo non ti invierà una notifica al termine della procedura.
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, creare una campagna indipendente dall'esperimento o abbandonare la campagna sperimentale.
Crea un esperimento
Un experiment è simile a una bozza e viene creato a partire da una campagna di base.
Crei un experiment con un ExperimentBuilder. In questo modo,
verrà creato automaticamente un esperimento con due "bracci" 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 (come indicato nei passaggi per la bozza mostrati in precedenza) prima di pianificare l'esperimento.
Quando crei un esperimento, assicurati di impostare tutti i seguenti elementi nel generatore:
withCampaign- La campagna su cui vuoi basare l'esperimento.
withTrafficSplitPercent- Percentuale di traffico che verrà assegnata al gruppo sperimentale. Per il 50%, specifica
50. withStartDateewithEndDate- Specifica la data di inizio e di fine della campagna. Specifica il valore nel formato
YYYYMMdd. withTypeSEARCH_CUSTOMoDISPLAY_CUSTOM, a seconda della rete che utilizzi.withSuffix- Specifica un suffisso che verrà aggiunto al nome della campagna sperimentale al momento della creazione.
withGoals- Specifica gli obiettivi di questo esperimento. Questo è solo un promemoria per ricordarti
quali erano i tuoi obiettivi quando l'hai creato. Un buon valore predefinito è
[{metric: 'CLICKS', direction: 'INCREASE'}].
La percentuale di suddivisione del traffico determina la porzione di traffico in cui verranno mostrati gli annunci della campagna sperimentale anziché quelli 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 vengono identificati in modo univoco da un singolo ID. Per saperne di più, consulta
ExperimentSelector.withIds().
Esegui il provisioning della campagna sperimentale
Analogamente a un draft, un experiment non è una campagna. ma mette 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");
Le modifiche al nome, alla data di inizio e alla data di fine possono essere apportate all'esperimento, dopo di che 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, in quanto devono essere copiate 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 la pubblicazione degli annunci venga interrotta, ma tu possa comunque interagire con l'esperimento. Un esperimento con stato Terminato può comunque essere rimosso, applicato o completato 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, il che comporta anche la rimozione della campagna sperimentale. La rimozione dell'esperimento è irreversibile, ma può comunque essere visualizzato in Tutti gli esperimenti nella scheda Esperimenti dell'interfaccia utente di Google Ads.
experiment.remove();Se i risultati dell'esperimento ti soddisfano, hai due opzioni:
Puoi iniziare ad applicare le modifiche e, come per le bozze, non riceverai una notifica al termine del processo.
experiment.startApplying();Puoi impostare la campagna di prova come campagna indipendente e completamente operativa, senza influire sulla campagna di base. Questo processo, noto come uscita, 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 di cui è stato eseguito l'upgrade 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 il concetto di entità di base. Le campagne bozza e di prova e i gruppi di annunci al loro interno sono diversi dalle campagne originali di base, motivo per cui Campaign e AdGroup ora dispongono di metodi per accedere alla campagna e al gruppo di annunci di base: getBaseCampaign() e getBaseAdGroup().
Questi metodi restituiscono l'entità chiamante se vengono chiamati da una campagna o un gruppo di annunci di base. Anche le entità all'interno di campagne e gruppi di annunci, come parole chiave e annunci, sono state dotate di questi metodi.
Per tenere traccia delle entità di base, le campagne sono state dotate dei metodi
isBaseCampaign(), isDraftCampaign() e
isExperimentCampaign().
I nuovi metodi Campaign.draftCampaigns() e
Campaign.experimentCampaigns() ti consentono di accedere a tutte le bozze e
alle campagne sperimentali che hanno la campagna chiamante come campagna di base.
Tuttavia, non puoi selezionare campagne bozza con
CampaignSelector.withCondition(); utilizza 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 vanno a buon fine. L'interfaccia utente di Google Ads mostra
gli stati Applicato o Attivo dopo il completamento
di startApplying() e startScheduling(), rispettivamente. Inoltre, in caso di errore indica Impossibile applicare o Impossibile creare, consentendoti di fare clic per visualizzare gli errori.
È anche possibile che alcuni metodi non funzionino nella fase di anteprima, ma funzionino dopo l'esecuzione, ad esempio dopo la creazione di una bozza:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
L'operazione non andrà a buon fine in modalità di anteprima perché non è possibile accedere immediatamente alla campagna bozza.
Allo stesso modo, la creazione di un esperimento e il tentativo immediato di recuperare la relativa bozza della campagna non andranno a buon fine 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.