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