home - ¿Es posible leer ExperimentId y VariationId en Javascript con Google Optimize?
google optimize home (4)
He creado una prueba A / B usando Google Optimize. Ahora me gustaría leer el experimento actual y la variación en Javascript. Mi objetivo es ejecutar diferentes javascript en función de la variación dada.
Parece que no puedo encontrar ninguna información sobre esto en la documentación. ¿Es posible?
Ahora también está disponible la API javascript de Google Optimize que es una mejor opción:
El experimentoId ahora está disponible en la interfaz de usuario de Optimize, tan pronto como se crea el experimento (antes de comenzar).
La API ya está disponible en la página y puedes usarla así:
google_optimize.get(''<experimentId>'');
(nota: esto funcionará solo después de que se haya cargado el script del contenedor de Optimize)
También puede registrar una devolución de llamada para ejecutar el javascript que desee en cualquier momento (incluso antes de que se haya cargado el script de Optimize) utilizando:
function gtag() {dataLayer.push(arguments)}
function implementExperimentA(value) {
if (value == ''0'') {
// Provide code for visitors in the original.
} else if (value == ''1'') {
// Provide code for visitors in first variant.
}
gtag(''event'', ''optimize.callback'', {
name: ''<experiment_id_A>'',
callback: implementExperimentA
});
Si desea encontrar el ID de experimento y la variación, puede registrar una devolución de llamada para cualquier experimento:
function implementManyExperiments(value, name) {
if (name == ''<experiment_id_A>'') {
// Provide implementation for experiment A
if (value == ''0'') {
// Provide code for visitors in the original.
} else if (value == ''1'') {
// Provide code for visitors in first variant.
...
} else if (name == ''<experiment_id_B>'') {
// Provide implementation for experiment B
...
}
gtag(''event'', ''optimize.callback'', {
callback: implementManyExperiments
});
Para más detalles
Google Optimize le permite ejecutar JS arbitrario por elemento de DOM.
Esta función está diseñada para modificar los elementos DOM, pero no hay nada que le impida utilizarla para llamar a una función JS o definir algunas variables.
Cómo configurar el script
- Edite la variante de su experimento en el Editor Visual.
- Haga clic en el icono Seleccionar elementos (el rectángulo en la esquina superior izquierda)
- En el campo Selector de elementos , escriba en cuerpo .
- Haga clic en el botón Agregar cambio y seleccione Javascript . Aparecerá un cuadro de diálogo que le permitirá ingresar una función JS que se llamará para el cuerpo.
- Ponga el código que desea ejecutar allí.
Qué código ejecutar
Suponiendo que tenga un método doSomething()
definido en su página, puede hacer que su función Optimizada de Google tenga este aspecto:
doSomething("Experiment #1", "Variant A");
Alternativamente, puedes intentar definir tus variables globalmente.
// We need to use `windows` here, because if we define a variable
// with `var`, it will be limited to the scope of the Google Optimize
// function.
window["google_optimize_exp_id"] = "Experiment #1";
window["google_optimize_exp_var_id"] = "Variant A";
Si usa el segundo método, tenga en cuenta que debe esperar hasta que la función Google Optimized se haya ejecutado antes de ejecutar su propia lógica.
He encontrado que el número de variante se puede obtener ejecutando un código como:
gaData["UA-XXXXXXXX-X"].experiments[''ZYkOuNLKEoeLytt-dLWw3x'']
El resultado debe ser "0" para el original, "1" para la primera variante ...
Puedes conseguir los experimentos con:
gaData["UA-XXXXXXXX-X"].experiments
Por supuesto, debe reemplazar UA-XXXXXXXX-X para el ID de Google Analytics y ZYkOuNLKEoeLytt-dLWw3x para su ID de experimento.
EDITAR: No importa mi respuesta basada en cookies a continuación, encontré una mejor solución.
Solo haz esto:
var propertyId = "UA-1234567-33";
var experimentId = Object.keys(gaData[propertyId].experiments)[0];
var variationId = gaData[propertyId].experiments[experimentId];
Respuesta antigua:
(No hagas esto ... manteniéndolo aquí como referencia)
La respuesta de Maximes está funcionando, pero no era exactamente lo que estaba buscando. Quería poder encontrar el ID de experimento y el ID de variación sin agregar código a través del editor visual. Finalmente encontré un camino.
Los valores se almacenan realmente en la cookie _gaexp . La cookie está presente cuando se está ejecutando un experimento. Puede inspeccionarlo en Chrome abriendo las Herramientas del desarrollador , yendo a la pestaña Aplicación y haciendo clic en Cookies en el panel izquierdo. Se ve algo como esto:
GAX1.2.S1SJOWxJTVO9tM2QKV3NcP.17723.1
La identificación del experimento es la parte después del segundo número:
S0SJOWxJTVO1tM2QKD2NcQ
La identificación de la variación es el último número:
1
Escribí este código para extraerlo de la cookie:
function getCookieValue(cookieName) {
var result = document.cookie.match(''(^|;)//s*'' + cookieName + ''//s*=//s*([^;]+)'');
return result ? result.pop() : '''';
}
function getExperimentId() {
var cookie = getCookieValue(''_gaexp'');
if (cookie == undefined) {
return undefined;
} else {
var fields = cookie.split(''.'');
return fields[2];
}
}
function getVariationId() {
var cookie = getCookieValue(''_gaexp'');
if (cookie == undefined) {
return undefined;
} else {
var fields = cookie.split(''.'');
return fields[4];
}
}
var experimentId = getExperimentId();
var variationId = getVariationId();
ADVERTENCIA: No es una buena idea obtener el ID y la variación del experimento de la cookie. Por dos razones.
- Cuando finaliza el experimento, la cookie sigue presente. La cookie se almacena en la memoria caché, por lo que encontrará un ID de experimento y un ID de variación que no se aplican, y no puede saber si el experimento se está ejecutando o no.
- Si detiene el experimento A y comienza el experimento B, el valor antiguo de A seguirá siendo parte de la cookie. Así se verá algo como esto:
GAX1.2.S1SJOWxJTVO9tM2QKV3NcP.17723.1! Vr1mB2L2RX6kSI1ZnUDTzT.18721.0
que es lo mismo que se vería si estuvieras ejecutando a los experimentos a la vez. Hace que sea difícil razonar acerca de qué experimento utilizar.