Google Optimize ist nach dem 30. September 2023 nicht mehr verfügbar. Sie können Ihre Tests und Personalisierungen bis dahin weiterhin laufen lassen. Weitere Informationen

Optimize JavaScript API

Mit der Optimize JavaScript API können Sie eigenen JavaScript-Code verwenden, um mithilfe von Callback-Funktionen Änderungen an Varianten vorzunehmen. Diese Änderungen lassen sich mit Änderungen aus dem visuellen Editor von Optimize kombinieren. Das bietet sich besonders dann an, wenn Sie Code entwickeln müssen, mit dem zusätzliche Aktionen zeitgleich mit der Anwendung der Änderungen ausgeführt werden. Auch für die allgemeine Fehlersuche kann die API sehr nützlich sein.

Themen in diesem Artikel

Implementierungs-Callbacks registrieren

Mit der Optimize Client API können Sie eine eigene Testimplementierung verwenden, die auf JavaScript-Code von Ihrer Website beruht. Der Optimize-Editor ist dann nicht erforderlich. Sie müssen einen eigenen Mechanismus zum Verhindern von Flackern implementieren, da Ihr JavaScript-Code möglicherweise erst aufgerufen wird, nachdem die Seite bereits für den Besucher geladen wurde.

Sie dürfen nicht vergessen, dass Optimize asynchron geladen wird. Daher kann kein synchroner Code verwendet werden, um zu prüfen, ob ein Test enthalten ist. Zwar treten nicht immer Probleme auf, doch ist die Ausführungsreihenfolge nicht garantiert.

Stattdessen müssen Sie die Implementierung als Callback umsetzen:

// Muss in Skripts nach der Optimize- oder Google Tag Manager-Installation
// oder der Initialisierung der dataLayer-Variablen eingefügt werden

// Nicht erforderlich, wenn die gtag-Implementierung von Google Analytics verwendet wird
function gtag() {dataLayer.push(arguments)}

function implementExperimentA(value) {
  if (value ==  '0 ] {
    // Code für Besucher (Original) bereitstellen
  } else if (value == '1') {
    // Code für Besucher (erste Variante) bereitstellen
  } else if (value == '2') {
    // Code für Besucher (Abschnittsvariante) bereitstellen
  }
  ...
}
   
gtag('event', 'optimize.callback', {
    name: '<experiment_id_A>',
    callback: implementExperimentA
 });

Sie können einen Implementierungs-Callback für einen Test mit einer bestimmten ID registrieren. Diese finden Sie auf der Detailseite des Tests.

Berücksichtigen Sie außerdem, dass Ihr Callback möglicherweise aufgerufen wird, bevor die vollständige DOM-Struktur verfügbar ist. Wenn Sie also Elemente auf Ihrer Seite ändern müssen, ist es möglicherweise erforderlich, den Status der Seite zu überprüfen und die Implementierung so zu registrieren, dass sie später als Event-Handler des Ereignisses DOMContentLoaded ausgeführt wird. Falls jQuery in der Seite enthalten ist, können Sie dazu auch beispielsweise jQuery.ready verwenden. Beispiel:

function implementExperimentA(value) {
  ... 
  else if (value == '2') {
    // Vorausgesetzt, auf der Seite ist jQuery eingebunden
    $( document ).ready(function() {
      $('#my_element').text('Hallo von Variante 2');
    })
  }
  ... 
}

Multivariate Tests (MVT)

Bei MVTs sind in dem Wert, der von Ihrem Test zurückgegeben wird, die Indexe aller Abschnittsvarianten enthalten. Sie sind durch einen Bindestrich („-“) getrennt.

function implementExperimentA(value) {
  var sections = value.split(„-“);
  if (sections[0] ==  '0') {
    // Code für ersten Abschnitt für Besucher im Original bereitstellen
  } else if (sections[0] == '1') {
    // Code für den ersten Abschnitt für Besucher (erste Variante) bereitstellen
  }
  ...
  if (sections[1] ==  '0') {
    // Code für den zweiten Abschnitt für Besucher (Original) bereitstellen
  } else if (sections[1] == '1') {
    // Code für den zweiten Abschnitt für Besucher (erste Variante) bereitstellen
  }
}

Mehrere Tests durchführen

Sie können auch einen einzelnen Callback verwenden, mit dem mehrere Tests implementiert werden:


function implementManyExperiments(value, name) {
  if (name == '<experiment_id_A>') {
    // Implementierung für Test A bereitstellen
    if (value ==  '0') {
      // Code für Besucher (Original) bereitstellen
    } else if (value == '1') {
      // Code für Besucher (erste Variante) bereitstellen
    ...
  } else if (name == '<experiment_id_B>') {
    // Implementierung für Test B bereitstellen
    ...
}
   
gtag('event', 'optimize.callback', {
    callback: implementManyExperiments
 });

Ressourcen für die Fehlerbehebung

Mit der Optimize JavaScript API haben Sie auch Zugriff auf die globale Variable google_optimize. Sie umfasst die GET-Methode und kann hilfreich bei der Fehlersuche sein. So lässt sich beispielsweise prüfen, ob ein Test für einen bestimmten Seitenbesuch aktiv ist, selbst wenn…

  • Änderungen nicht sichtbar sind. Das kann z. B. der Fall sein, wenn sie in Inhalten angewendet wurden, die aktuell ausgeblendet sind.
  • es Probleme gibt und die Zielelemente z. B. nicht mehr auf der Seite vorhanden sind.
  • an einigen Varianten keine Änderungen vorgenommen wurden.
  • der Besucher dem Original zugewiesen wurde.

Wenn Sie Fehler in einem Test beheben möchten, müssen Sie in Optimize auf der Detailseite des Tests zuerst die Test-ID abrufen. Sehen Sie dann nach, welche Variante dem Test zugewiesen ist. Dazu machen Sie folgende Eingabe in den Chrome-Entwicklertools > Tab „Console“:

console.log(google_optimize && google_optimize.get('<experiment_id_A>'));

Hinweis
 
google_optimize ist eventuell nicht definiert, wenn es keine aktiven Tests gibt.

Wenn in den Entwicklertools auf dem Tab „Console“ undefined (nicht definiert) als Ergebnis angezeigt wird, ist der Test auf der Seite nicht aktiv. Mögliche Gründe:

In den Entwicklertools auf dem Tab „Console“ wird folgendes Ergebnis angezeigt:

  • 0: Der Test wurde ausgeführt und ist aktiv. Der Besucher wurde Variante 0 (Original) zugewiesen.
  • 1: Der Test wurde ausgeführt und ist aktiv. Der Besucher wurde Variante 1 zugewiesen.
  • 2: Der Test wurde ausgeführt und ist aktiv. Der Besucher wurde Variante 2 zugewiesen.
  • Und so weiter.

Wenn Sie alle derzeit aktiven Tests sehen möchten, geben Sie Folgendes in die Entwicklertools > Tab „Console“ ein:

gtag('event', 'optimize.callback', {
      callback: (value, name) => console.log(
          'Experiment with ID: ' + name + ' is on variant: ' + value)
   });

Seiteninitialisierung mit Verzögerung

In einigen Fällen ist es erforderlich, bei der Initialisierung einer Seite die Ausführung bestimmter Funktionen zu verzögern, damit Sie einen Testwert verwenden können. Ein Beispiel: Sie haben Ajax-Anfragen, bei denen zusätzliche Daten geladen werden, und möchten für die Anfragen unterschiedliche URL-Pfade für verschiedene Varianten verwenden.

Hier bietet sich das Snippet zum Ausblenden von Seiten an. Dadurch wird sichergestellt, dass für diese wichtige Funktion die maximal zulässige Verzögerung festgelegt ist (auf Basis des Zeitlimits zum Ausblenden der Seite) und dass sie in jedem Fall aufgerufen wird. Außerdem müssen Sie dafür sorgen, dass diese Funktion für Nutzer initialisiert wird, die nicht an Ihrem Test teilnehmen, weil sie entweder nicht mit den Ausrichtungsregeln übereinstimmen oder Sie nicht sämtliche Zugriffe in Ihren Test aufnehmen.

Dazu können Sie das Snippet zum Ausblenden von Seiten in Ihre Seite einfügen und den Callback überschreiben, der die Ausblendung beendet:

function delayedInitialization() {
   var value = google_optimize &&
               google_optimize.get('<experiment_id_A>');
   if (value == '0') {
      // Code für Besucher im Original bereitstellen
   } else if (value == '1') {
      // Code für Besucher (erste Variante) bereitstellen
   ...
   } else if (value == undefined) {
      // Code für Besucher, die nicht am Test teilnehmen, bereitstellen
   }
}

var hideEnd = dataLayer.hide.end;
if (hideEnd) {
  dataLayer.hide.end = function() {
    delayedInitialization();
    hideEnd();
  }
} else {
  delayedInitialization();
}

 

Hinweis
 
Wenn Sie nicht möchten, dass für Ihre Webseiten der Seitenausblendungseffekt genutzt wird, entfernen Sie einfach die erste <STYLE>-Zeile aus dem Snippet zum Ausblenden von Seiten. Weitere Informationen finden Sie auf der Google Developers-Website.

Wie oben gezeigt, gibt es eine globale Window-Variable namens google_optimize. Mit ihr können die Testwerte abgerufen werden. Verwenden Sie jedoch diese Variable nicht direkt in Ihrem Code. Sie ist nämlich erst nach dem Laden des Optimize-Containers definiert und lässt sich daher in synchronen Skripts nicht nutzen.

Die Variable google_optimize ist auch nicht definiert, wenn das Optimize-Containerskript nicht geladen werden kann (z. B. aufgrund von Netzwerkproblemen). Der Code von oben gibt außerdem für Tests mit benutzerdefinierter Aktivierung nicht definierte Testwerte zurück. Solche Tests werden typischerweise erst später aktiviert und geben deshalb auch später Werte zurück.

Aktivierungsereignisse

Wenn Sie Aktivierungsereignisse für Ihren Test verwenden, kann es sein, dass Ihre Callbacks mehrmals aufgerufen werden, und zwar jedes Mal, wenn eine Variante reaktiviert oder deaktiviert wird. Wurde eine Variante deaktiviert, ist der Testwert nicht definiert.

function implementExperimentA(value) {
  if (value ==  '0') {
    // Original wurde aktiviert oder reaktiviert
    // (kann mehrmals aufgerufen werden)
  } else if (value == '1') {
    // Erste Variante wurde aktiviert oder reaktiviert
    // (kann mehrmals aufgerufen werden)
  ...
  } else if (value == undefined) {
    // Test wurde deaktiviert
    // (kann mehrmals aufgerufen werden)
  }

 

In diesem Fall wird Ihr Callback mehrmals mit dem gleichen Wert (bei Reaktivierung) oder mit „undefined“ (nicht definiert) aufgerufen.

Beispiel

Wert -> 1 1 1 undefined 1 undefined 1 1 usw.

Registrierung von Callbacks aufheben

In manchen Fällen möchten Sie, dass Callbacks nicht mehr aufgerufen werden. Ihre Registrierung soll also aufgehoben werden, damit Testwerte nicht mehr verarbeitet werden. Das kann beispielsweise der Fall sein, wenn Sie Tests verwenden, in denen Aktivierungsereignisse vorkommen und Ihre Seite oder Single Page-App in einen neuen, nicht vorgesehenen Status übergeht, sodass der Testwert nicht verarbeitet werden kann.

So können Sie die Registrierung eines Callbacks für einen bestimmten Test aufheben und den Callback entfernen:

gtag('event', 'optimize.callback', {
    name: '<experiment_id_A>',
    callback: implementExperimentA,
    remove: true
 });

So können Sie die Registrierung von mehreren Callbacks auf einmal aufheben und diese entfernen:

gtag('event', 'optimize.callback', {
    callback: implementManyExperiments,
    remove: true
 });
War das hilfreich?
Wie können wir die Seite verbessern?
Suche
Suche löschen
Suche schließen
Google-Apps
Hauptmenü
true
Suchen in der Hilfe
true
true
true
true
true
101337