Las secuencias de comandos de Google Ads admiten los borradores y experimentos de campañas, que se utilizan para preparar y probar cambios en las campañas de la Red de Búsqueda y la Red de Display.
Un borrador es un clon de una campaña existente que no publicará sus propios anuncios, pero se puede usar para preparar cambios sin modificar la campaña original. Luego, los cambios almacenados se pueden aplicar a la campaña de base.
Un experimento ejecuta una campaña personalizable en paralelo a la campaña original y muestra anuncios a un porcentaje específico del tráfico. Según los resultados del experimento, puedes aplicar los cambios a la campaña original, derivar el experimento a una campaña independiente o abandonar la campaña experimental.
En esta guía, se explica el flujo de trabajo básico para trabajar con borradores y experimentos en una secuencia de comandos.
Borradores
Crear un borrador
Para crear un borrador a partir de una campaña básica existente, se usa un objeto DraftBuilder
y se proporciona un nombre único. La campaña base debe ser una campaña de Búsqueda, de la Red de Búsqueda con expansión de Display o de Display (sin incluir las campañas de aplicaciones para dispositivos móviles de la Red de Display) y no debe tener un presupuesto compartido.
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()
devuelve un DraftOperation
, una operación típica en Scripts. Consulta nuestra guía para desarrolladores para obtener más detalles.
Un draft
se identifica de forma única por la combinación de su ID de campaña básica y su ID de borrador. Consulta DraftSelector.withIds()
para obtener más información.
Aprovisiona el borrador de campaña
Un objeto draft
relaciona una campaña básica y una campaña en borrador. Para preparar actualizaciones en la campaña de base, propaga los cambios a través de la campaña en borrador.
Al igual que cualquier otra campaña, una campaña en borrador tiene métodos para obtener y establecer sus diversos atributos, como criterios, grupos de anuncios, ofertas y anuncios.
const draftCampaign = draft.getDraftCampaign();
draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");
Ten en cuenta que las verificaciones de políticas de anuncios se realizan para una campaña en borrador de la misma manera que para la campaña base. No podrás ejecutar un experimento a partir de un borrador de campaña que tenga anuncios que incumplan las políticas.
Ejecuta el borrador
Después de aprovisionar el borrador de la campaña, puedes hacer lo siguiente:
Si no quieres usar los cambios, simplemente puedes quitar el borrador. Quitar el borrador es irreversible, pero se puede seguir viendo en Todos los borradores en la pestaña Borradores de la IU de Google Ads.
draft.remove();
Si decides conservar los cambios que realizaste en el borrador, puedes aplicarlos:
draft.startApplying();
Este método inicia el proceso de aplicación de las actualizaciones a la campaña básica, por lo que el borrador tendrá el estado Aplicando… en la IU de Google Ads. Sin embargo, el método no te notificará cuando se complete el proceso.
Si primero deseas probar los cambios, puedes usar el borrador para crear un experimento.
Experimentos
Crea un experimento
Un experiment
es similar a un borrador y también se crea a partir de una campaña básica. Creas un experiment
con un ExperimentBuilder
.
Esto creará automáticamente un experimento con dos "brazos" que representan las diferentes partes del experimento. Un grupo (llamado grupo de control) contendrá la campaña de base, y el otro (llamado grupo de tratamiento) contendrá un borrador de campaña nuevo que personalizarás según los pasos del borrador anteriores antes de programar el experimento.
Cuando crees un experimento, asegúrate de configurar todos los parámetros que se indican a continuación en el compilador:
withCampaign
- Es la campaña en la que se basará el experimento.
withTrafficSplitPercent
- Qué porcentaje del tráfico se destinará al grupo experimental. Para el 50%, especifica
50
. withStartDate
ywithEndDate
- Especifica la fecha de inicio y finalización de la campaña. Especifica el formato
YYYYMMdd
. withType
SEARCH_CUSTOM
oDISPLAY_CUSTOM
, según la red que uses.withSuffix
- Especifica un sufijo que se agregará al nombre de la campaña de tratamiento cuando se cree.
withGoals
- Especifica los objetivos de este experimento. Esto solo te recordará cuáles eran tus objetivos cuando lo creaste. Un buen valor predeterminado es
[{metric: 'CLICKS', direction: 'INCREASE'}]
.
El porcentaje de división del tráfico determina qué parte del tráfico mostrará anuncios de la campaña experimental en lugar de la campaña de base. Por este motivo, cada campaña básica solo puede tener un experimento en ejecución a la vez.
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 diferencia de los borradores, los experimentos se identifican de forma única con un solo ID. Consulta ExperimentSelector.withIds()
para obtener más información.
Aprovisiona la campaña experimental
Al igual que un draft
, un experiment
no es una campaña en sí. En cambio, relaciona la campaña de base, el borrador y la campaña experimental. Los campos de una campaña experimental se pueden modificar, con las siguientes excepciones:
- nombre
- estado
- fecha de inicio
- fecha de finalización
- presupuesto
const experimentCampaign = experiment.getExperimentCampaign();
// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");
// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");
Se pueden realizar cambios en el nombre, la fecha de inicio y la fecha de finalización del experimento, después de lo cual se propagarán a la campaña del experimento.
// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");
// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);
Para iniciar el experimento, llama a experiment.startScheduling()
. Este es un proceso asíncrono, ya que debe copiar todos los parámetros de configuración de la campaña de base.
Después de que finalice el experimento
Cuando finalice el experimento, tendrás algunas opciones. Te recomendamos que dejes que el experimento finalice por completo para que deje de publicar anuncios, pero puedas seguir interactuando con él. Un experimento Finalizado se puede quitar, aplicar o completar, y se puede seguir accediendo a las estadísticas de rendimiento de su campaña.
experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
Si no estás satisfecho con el experimento según las estadísticas, puedes quitarlo, lo que también quitará la campaña experimental. Quitar el experimento es irreversible, pero se puede seguir viendo en Todos los experimentos en la pestaña Experimentos de la IU de Google Ads.
experiment.remove();
Si estás conforme con los resultados del experimento, tienes dos opciones:
Puedes comenzar a aplicar los cambios y, al igual que con los borradores, no recibirás una notificación cuando se complete el proceso.
experiment.startApplying();
Puedes establecer la campaña experimental como una campaña independiente y en pleno funcionamiento, sin afectar la campaña base. Este proceso, conocido como graduación, se completa de inmediato y requiere que se establezca un nuevo presupuesto.
const budget = AdsApp.budgets() .withCondition(`campaign_budget.id = ${budgetId}`) .get() .next(); experiment.graduate(budget);
La campaña nueva ya no puede compartir un presupuesto con la campaña básica, lo que requiere un presupuesto nuevo. Las campañas actualizadas son como las campañas normales, ya que todos sus campos se pueden modificar y pueden servir como campaña base para más borradores y experimentos.
Otras consideraciones
Entidades básicas
La introducción de borradores y experimentos en las secuencias de comandos de Google Ads también introduce la noción de entidades básicas. Las campañas de borrador y experimentales, y los grupos de anuncios que contienen, son distintos de sus campañas originales de base, por lo que Campaign
y AdGroup
ahora tienen métodos para acceder a su campaña y grupo de anuncios de base: getBaseCampaign()
y getBaseAdGroup()
.
Estos métodos devuelven la entidad de llamada si se los llama desde una campaña o un grupo de anuncios básicos. Las entidades dentro de las campañas y los grupos de anuncios, como las palabras clave y los anuncios, también recibieron esos métodos.
Para ayudar a hacer un seguimiento de las entidades básicas, se les asignaron a las campañas los métodos isBaseCampaign()
, isDraftCampaign()
y isExperimentCampaign()
.
Los nuevos métodos Campaign.draftCampaigns()
y Campaign.experimentCampaigns()
te permiten acceder a todas las campañas experimentales y de borrador que tienen la campaña de llamada como campaña base. Sin embargo, no puedes seleccionar campañas en borrador con CampaignSelector.withCondition()
; en su lugar, usa AdsApp.drafts()
.
Manejo de errores
Los siguientes métodos que involucran borradores y experimentos se ejecutan cuando se ejecuta la secuencia de comandos, pero podrían fallar de forma asíncrona:
Draft.startApplying()
Experiment.startApplying()
Experiment.startScheduling()
Debes esperar para verificar si estas operaciones se completaron correctamente. La IU de Google Ads muestra los estados Aplicado o Activo después de que se completan correctamente startApplying()
y startScheduling()
, respectivamente. Además, indica No se puede aplicar o No se puede crear en caso de falla, lo que te permite hacer clic para ver los errores.
También es posible que algunos métodos fallen en la etapa de vista previa, pero se ejecuten correctamente después, por ejemplo, después de crear un borrador:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
Esto fallará en el modo de vista previa, ya que no puede acceder a la campaña en borrador de inmediato.
Del mismo modo, crear un experimento y tratar de recuperar de inmediato su campaña en borrador fallará en el modo de vista previa, ya que el borrador no se creó.
Por este motivo, después de ejecutar las secuencias de comandos, revisa los registros que se encuentran debajo de la lista de secuencias de comandos y continúa con una secuencia de comandos que falló en la vista previa solo si crees que la causa se debe a limitaciones en el modo de vista previa.