web-dev-qa-db-fra.com

Est-il possible de lire ExperimentId et VariationId en Javascript avec Google Optimize?

J'ai créé un test A/B à l'aide de Google Optimize. Maintenant, je voudrais lire les experimentId et variationId actuels en Javascript. Mon objectif est d'exécuter différents javascript en fonction de la variation donnée.

Je n'arrive pas à trouver d'informations à ce sujet dans la documentation. C'est possible?

22
Øyvind Holmstad

Maintenant, il y a aussi l'API javascript Google Optimize disponible qui est une meilleure option:

L'expérienceId est désormais disponible dans l'interface utilisateur Optimiser, dès que l'expérience est créée (avant de commencer).

L'API est déjà disponible dans la page et vous pouvez l'utiliser comme ceci:

google_optimize.get('<experimentId>');

(remarque: cela ne fonctionnera qu'après le chargement du script de conteneur Optimiser)

Vous pouvez également enregistrer un rappel pour exécuter le javascript que vous souhaitez à tout moment (même avant le chargement du script Optimize) en utilisant:

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 vous souhaitez trouver à la fois l'ID d'expérience et la variation, vous pouvez enregistrer un rappel pour n'importe quelle expérience:

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

Pour plus de détails

https://support.google.com/optimize/answer/905938

5
Optimize Team

EDIT: Peu importe ma réponse basée sur les cookies ci-dessous, j'ai trouvé une meilleure solution.

Faites juste ceci:

var propertyId = "UA-1234567-33";
var experimentId = Object.keys(gaData[propertyId].experiments)[0];
var variationId = gaData[propertyId].experiments[experimentId];

Ancienne réponse:

(Ne faites pas ça .. gardez-le ici pour référence)

La réponse de Maximes fonctionne mais n'était pas exactement ce que je cherchais. Je voulais pouvoir trouver experimentId et variationId sans ajouter de code via l'éditeur visuel. J'ai enfin trouvé un moyen.

Les valeurs sont réellement stockées dans le cookie _ gaexp . Le cookie est présent lorsqu'une expérience est en cours. Vous pouvez l'inspecter dans Chrome en ouvrant les outils de développement , en allant dans Onglet Application et en cliquant Cookies dans le volet gauche. Il ressemble à ceci:

GAX1.2.S1SJOWxJTVO9tM2QKV3NcP.17723.1

L'identifiant de l'expérience est la partie après le deuxième nombre:

S0SJOWxJTVO1tM2QKD2NcQ

L'ID de variation est le dernier nombre:

1

J'ai écrit ce code pour l'extraire du 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();

AVERTISSEMENT: La récupération de l'ID d'expérience et de l'ID de variation à partir du cookie n'est pas une bonne idée. Pour deux raisons.

  1. Une fois l'expérience terminée, le cookie est toujours présent. Le cookie est mis en cache, vous trouverez donc un ID d'expérience et un ID de variation qui ne s'appliquent pas, et vous ne pouvez pas savoir si l'expérience est en cours d'exécution ou non.
  2. Si vous arrêtez l'expérience A et démarrez l'expérience B, l'ancienne valeur de A fera toujours partie du cookie. Cela ressemblera donc à ceci:

GAX1.2.S1SJOWxJTVO9tM2QKV3NcP.17723.1! Vr1mB2L2RX6kSI1ZnUDTzT.18721.0

ce qui revient à ce à quoi cela ressemblerait si vous exécutiez des expériences à la fois. Il est difficile de raisonner sur ce que experimentId utiliser.

12
Øyvind Holmstad

Google Optimize vous permet d'exécuter JS arbitraire sur une base par élément DOM.

Cette fonctionnalité est destinée à modifier les éléments DOM, mais rien ne vous empêche de l'utiliser pour appeler une fonction JS ou définir certaines variables.

Comment configurer le script

  1. Modifiez votre variante de test dans Visual Editor.
  2. Cliquez sur l'icône Sélectionner les éléments (le rectangle dans le coin supérieur gauche)
  3. Dans le champ Element Selector, saisissez body.
  4. Cliquez sur le bouton Ajouter une modification et sélectionnez Javascript. Cela fera apparaître une boîte de dialogue qui vous permet de saisir une fonction JS qui sera appelée pour le corps.
  5. Mettez-y le code que vous souhaitez exécuter.

Quel code exécuter

En supposant que vous ayez une méthode doSomething() définie sur votre page, vous pouvez faire en sorte que votre fonction Google Optimized ressemble à ceci:

doSomething("Experiment #1", "Variant A");

Alternativement, vous pouvez essayer de définir vos variables globalement.

// 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 vous utilisez la deuxième méthode, gardez à l'esprit que vous devez attendre que la fonction Google Optimized soit exécutée avant d'exécuter votre propre logique.

5
Maxime Rainville

J'ai trouvé que le numéro de variante peut être obtenu en exécutant un code comme:

gaData["UA-XXXXXXXX-X"].experiments['ZYkOuNLKEoeLytt-dLWw3x']

Le résultat devrait être "0" pour l'original, "1" pour la première variante ...

Vous pouvez obtenir les expériences avec:

gaData["UA-XXXXXXXX-X"].experiments

Bien sûr, vous devez remplacer UA-XXXXXXXX-X pour l'ID Google Analytics et ZYkOuNLKEoeLytt-dLWw3x pour votre ID d'expérience.

1
Osvaldo