Richtlinien für benutzerdefinierte Vorlagen

Richtlinien werden auf einer Webseite implementiert. Wenn ein Container auf der Seite ausgeführt wird, werden Richtlinien auf die Definitionen der benutzerdefinierten Vorlagen in Tag Manager angewendet, um zu steuern, wie bestimmte Funktionen verwendet werden können. Richtlinien werden mit der gtag('policy', ...) API implementiert.

Die gtag('policy', ...) API erfordert Definitionen für dataLayer und gtag(). Achten Sie darauf, dass dataLayer und gtag() im Code definiert sind, bevor gtag('policy', ...) später im Skript aufgerufen wird:

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

Verwenden Sie die gtag('policy', ...) API auf einer Webseite, um Richtlinien für Berechtigungen für benutzerdefinierte Vorlagen festzulegen:

gtag('policy', <permissionId>, <function>)

Das Argument <permissionId> ist ein beliebiger der unterstützten Berechtigungstypen, z.B. inject_script Die Richtlinie wird immer dann aufgerufen, wenn ein Container prüfen möchte, ob diese Berechtigung zulässig ist.

gtag('policy', 'inject_script', function(containerId, permissionId, data) {
  // Specific inject_script check goes here.
});

Geben Sie 'all' an, um mit allen Richtlinienprüfungen zu interagieren.

gtag('policy', 'all', function(containerId, permissionId, data) {
  // System-wide check goes here.
});

Das dritte Argument (<function>) ist eine Funktion, die die angegebene Richtlinie mit dieser Signatur implementiert:

function(containerId, permissionId, data) {...}
  • containerId ist die Tag Manager-Container-ID, z.B. 'GTM-1234'.
  • permissionId ist ein String, der den Typ der zu prüfenden Richtlinie angibt.
  • data ist ein Objekt, das alle relevanten Informationen für den angegebenen Berechtigungstyp enthält, z.B. 'url' für eine 'send_pixel'-Berechtigung.

Eine Richtlinienfunktion lehnt eine Berechtigungsanfrage ab, wenn sie false zurückgibt oder eine Ausnahme auslöst. Ausnahmen vom Typ string oder Error werden im Bereich Fehler des Debug-Fensters angezeigt, wenn der Vorschaumodus aktiviert ist. Wenn mehrere Richtlinienprüfungen registriert sind, wird jede Prüfung aufgerufen und kann jeweils eine Richtlinienanfrage ablehnen.

In diesem Beispiel wird eine Richtlinie erstellt, die die Berechtigung 'inject_script' prüft:

gtag('policy', 'inject_script', function(containerId, permissionId, data) {

  // reference the url of the script to be injected
  let url = data.url || '';

  // if the url of the injected script exactly matches, allow it.
  // otherwise throw an error
  if (url === 'https://scripts.example.com/analytics.js') {
    return true;
  } else {
    throw 'Only permitted to inject https://scripts.example.com/analytics.js';
  }
});

In diesem Beispiel wird das Schlüsselwort 'all' verwendet, um mehrere Richtlinienszenarien zu prüfen:

gtag('policy', 'all', function(containerId, permissionId, data) {

  // Only set policy for 1 specific container.
  // This enables other containers loaded on the page to
  // operate without restrictions on permissions.
  if (container != 'GTM-4321') return true;

  // Since the policy is 'all', adjust permissions conditionally.
  switch (permissionId) {

    case 'send_pixel':
      return true;

    case 'write_globals':
      return data.key && data.key == '_gaq';

    case 'inject_script':
      let url = data.url || '';
      if (url.indexOf('https://example.com') != 0)
        throw 'Only example.com scripts are permitted';

    default:
      // IT staff decides that all unknown permissions
      // are rejected.
      return false;
  }
});