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 von Tag Manager angewendet, um zu steuern, wie bestimmte Funktionen verwendet werden können. Richtlinien werden mit der gtag('policy', ...) API implementiert.

Für die gtag('policy', ...) API sind Definitionen für dataLayer und gtag() erforderlich. 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 benutzerdefinierte Vorlagenberechtigungen festzulegen:

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

Das Argument <permissionId> ist einer 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 false zurückgegeben oder eine Ausnahme ausgelöst wird. Alle Ausnahmen mit dem Typ string oder Error werden im Bereich Fehler des Debug-Bereichs angezeigt, wenn der Vorschaumodus aktiviert ist. Wenn mehrere Richtlinienprüfungen registriert sind, wird jede Prüfung aufgerufen und jede Prüfung kann 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 werden mit dem Keyword 'all' mehrere Richtlinienszenarien geprüft:

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