In diesem Dokument werden die Berechtigungen für benutzerdefinierte Webvorlagen beschrieben.
Jede Berechtigung ist:
- Wird von APIs geprüft, für die sie erforderlich sind.
- Wird in JavaScript-Sandboxes automatisch erkannt, je nachdem, welche APIs verwendet werden. Das geschieht, wenn Änderungen im Editor für benutzerdefinierte Vorlagen vorgenommen werden (für eine schnelle Feedbackschleife) und wenn Code kompiliert wird (um zu prüfen, ob die richtigen Berechtigungen erzwungen werden).
- Im Editor für benutzerdefinierte Vorlagen bearbeitbar, um die Berechtigung zu präzisieren.
- Kann in sandboxed JavaScript über die
queryPermission
API abgefragt werden.
access_globals
Anzeigename:Zugriff auf globale Variablen
Beschreibung:Ermöglicht den Zugriff auf eine globale Variable (ggf. einschließlich sensibler APIs).
Konfiguration:Liste der Schlüssel, auf die zugegriffen werden kann. Jeder Schlüssel ist ein durch Punkte getrennter Pfad. Beispiel: foo.bar
Das erste Token in jedem Pfad darf kein vordefinierter Schlüssel im globalen Browserumfang und kein JavaScript-Keyword sein. Die Kästchen für Lese-, Schreib- und Ausführungszugriff regeln den Zugriff.
Erforderlich für: setInWindow
, copyFromWindow
, callInWindow
,
createQueue
, createArgumentsQueue
Abfragesignatur:queryPermission('access_globals', 'read', <key to read
from>)
oder queryPermission('access_globals', 'write', <key to write to>)
oder queryPermission('access_globals', 'readwrite', <key to read and write>)
oder queryPermission('access_globals', 'execute', <key of function to execute>)
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage globale Werte lesen und/oder in diese schreiben kann.
Beispielcode
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
access_local_storage
Anzeigename:Zugriff auf lokalen Speicher
Beschreibung:Ermöglicht den Zugriff auf die angegebenen Schlüssel im lokalen Speicher.
Konfiguration:Liste der Schlüssel für den lokalen Speicher, auf die zugegriffen werden kann. Dies ist ein einfaches Array von Schlüsseln ohne Platzhalter. Es gibt Kästchen für Lese- und Schreibzugriff, die den Zugriff regeln.
Erforderlich für: localStorage
Abfragesignatur: queryPermission('access_local_storage', 'read', <key to
read from>)
oder queryPermission('access_local_storage', 'write', <key to write
to>)
oder queryPermission('access_local_storage', 'readwrite', <key to read and
write>)
Beispielcode
const queryPermission = require('queryPermission');
const localStorage = require('localStorage');
const key = 'my_key';
if (queryPermission('access_local_storage', 'read', key)) {
const value = localStorage.getItem(key);
}
access_template_storage
Anzeigename:Zugriff auf Vorlagenspeicher
Beschreibung:Ermöglicht den Zugriff auf den temporären Speicher für Vorlagen, die während der gesamten Lebensdauer der Seite erhalten bleiben können.
Konfiguration:Keine
Erforderlich für: templateStorage
Abfragesignatur: queryPermission('access_template_storage')
Beispielcode
const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateStorage.getItem(key);
}
get_cookies
Anzeigename:Liest Cookie-Wert(e)
Beschreibung:Liest die Werte der Cookies mit dem angegebenen Namen.
Konfiguration:Liste der Namen von Cookies, die zum Lesen zulässig sind.
Erforderlich für: getCookieValues
Abfragesignatur: queryPermission('get_cookies', <name>)
Hinweise:Bestimmt, ob ein Cookie gelesen werden kann, je nach Name.
Beispielcode
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
get_referrer
Anzeigename:Die Verweis-URL wird gelesen.
Beschreibung:Ermöglicht Lesezugriff auf eingeschränkte Bereiche des Verweisquellen-Eintrags.
Konfiguration:Mit den folgenden Booleschen Werten wird festgelegt, welcher Teil des Verweisquellen-URLs gelesen werden kann. Ein bestimmter Teil des Verweis-URLs kann nur gelesen werden, wenn der entsprechende Teil true
ist. Der Aufrufer kann getReferrerUrl
ohne Angabe einer Komponente aufrufen, um die vollständige Verweis-URL abzurufen, wenn alle diese Booleschen Werte auf true
festgelegt sind. Wenn kein Wert festgelegt ist, lautet der Standardwert all
. Wenn ein Wert festgelegt ist, muss es sich dabei um ein Array von Komponenten handeln, wobei eine Komponente einen der folgenden Werte haben muss: protocol
, host
, port
, path
, query
oder extension
.
queryKeys
:Wenn „Abfrage“ ausgewählt ist, kann der Vorlagenautor die Abfrageschlüssel, aus denen gelesen werden kann, weiter einschränken. Dies ist ein einfaches Array von Schlüsseln ohne Platzhalter.
Erforderlich für: getReferrerUrl
, getReferrerQueryParameters
Abfragesignatur: queryPermission('get_referrer', <url_component>)
Beispielcode
const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
referrer = getReferrerUrl('queryParams');
}
get_url
Anzeigename:Liest die URL.
Beschreibung:Hier wird ein Teil oder die vollständige URL der aktuellen Seite zurückgegeben.
Konfiguration:Mit den folgenden Booleschen Werten wird festgelegt, welcher Teil der URL gelesen werden kann. Ein bestimmter Teil der URL kann nur gelesen werden, wenn der entsprechende Teil wahr ist. Der Aufrufer kann getUrl
ohne Angabe einer Komponente aufrufen, um die vollständige URL abzurufen, wenn und nur wenn alle diese Booleschen Werte auf true
festgelegt sind. Wenn kein Wert festgelegt ist, lautet der Standardwert all
. Wenn ein Wert festgelegt ist, muss es sich um ein Array von Komponenten handeln, wobei eine Komponente einen der folgenden Werte haben muss: protocol
, host
, port
, path
, query
, extension
oder fragment
.
queryKeys
:Wenn „Abfrage“ ausgewählt ist, kann der Ersteller der Vorlage die Abfrageschlüssel, aus denen gelesen werden kann, weiter einschränken. Dies ist ein einfaches Array von Schlüsseln ohne Platzhalter.
Erforderlich für: getUrl
Abfragesignatur: queryPermission('get_url', <optional url component>,
<optional query key>)
Falls angegeben, muss die URL-Komponente einen der folgenden Werte haben: 'protocol'
, 'host'
, 'port'
, 'path'
, 'query'
, 'extension'
, 'fragment'
. Wenn sie weggelassen wird, ist die Berechtigungsanfrage eine Anfrage für den Zugriff auf die gesamte URL.
Wenn angegeben, sollte der Abfrageschlüssel das Abfragestring-Argument sein, das vom Vorlagencode gelesen werden soll.
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Daten vom aktuellen Speicherort lesen kann. Ermöglicht die Beschränkung auf einen bestimmten Teil des Standorts.
Beispielcode
const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
const gclid = getUrl('query', false, null, 'gclid');
}
inject_hidden_iframe
Anzeigename:Versteckte iFrames werden eingefügt.
Beschreibung:Ein unsichtbarer iFrame mit einer bestimmten URL wird eingefügt.
Konfiguration:Liste der URL-Muster
Erforderlich für: injectHiddenIframe
Abfragesignatur: queryPermission('inject_hidden_iframe', <url>)
Hinweise:Bestimmt, ob eine benutzerdefinierte Vorlage einen unsichtbaren iFrame einschleusen kann und von welchem Ursprung aus.
Beispielcode
const queryPermission = require('queryPermission');
const injectHiddenIframe = require('injectHiddenIframe');
const url = 'https://www.example.com/iframes';
if (queryPermission('inject_hidden_iframe', url)) {
injectHiddenIframe(url);
}
inject_script
Anzeigename:Skripts werden einschleust.
Beschreibung: Ein Script wird in die Seite eingefügt.
Konfiguration:Liste der URL-Muster
Erforderlich für: injectScript
Abfragesignatur: queryPermission('inject_script', <url>)
Hinweise:Hier legen Sie fest, ob und von wo aus JavaScript in eine benutzerdefinierte Vorlage eingefügt werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
injectScript(url);
}
Logging
Anzeigename:In Console aufzeichnen
Beschreibung:Protokolliert Meldungen in der Entwicklerkonsole und im Vorschaumodus von Google Tag Manager.
Konfiguration:Option zum Aktivieren des Loggings in der Produktionsversion. Standardmäßig wird das Logging nur im Debug-/Vorschaumodus aktiviert. Wenn die Berechtigung abgelehnt wird, gibt logToConsole
keinen Fehler aus, sondern unterdrückt die Protokollmeldung.
Erforderlich für: logToConsole
Abfragesignatur: queryPermission('logging')
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage in der Entwicklerkonsole protokolliert werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const logToConsole = require('logToConsole');
// Note that it's fine to call log, since the log call will be ignored if
// logging isn't permitted in the current environment.
logToConsole('diagnostic info');
read_data_layer
Anzeigename:Liest die Datenschicht
Beschreibung:Liest Daten aus der dataLayer.
Konfiguration: Eine Reihe von Schlüsselübereinstimmungsausdrücken, wobei eine Schlüsselübereinstimmung eine anführende Reihe von Punktbezug mit einem abschließenden Platzhalter sein kann. Mit Schlüsselabgleichsausdrücken wird festgelegt, welche Properties aus der Datenebene gelesen werden können.
Erforderlich für: copyFromDataLayer
Abfragesignatur: queryPermission('read_data_layer', <data layer key to read
from>)
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Daten aus der Datenebene lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const copyFromDataLayer = require('copyFromDataLayer');
const dlKey = 'foo.bar';
if (queryPermission('read_data_layer', dlKey)) {
const dlContents = copyFromDataLayer(dlKey);
}
read_character_set
Anzeigename:Liest den Dokumentzeichensatz
Beschreibung:Liest document.characterSet
.
Konfiguration:Keine
Erforderlich für: readCharacterSet
Abfragesignatur: queryPermission('read_character_set')
Hinweise:Gibt an, ob eine benutzerdefinierte Vorlage document.characterSet
lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
read_container_data
Anzeigename:Liest Containerdaten
Beschreibung:Liest Daten zum Container.
Konfiguration:Keine
Erforderlich für: getContainerVersion
Abfragesignatur: queryPermission('read_container_data')
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Daten zum Container lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
version = getContainerVersion();
}
read_event_metadata
Anzeigename:Liest Ereignis-Metadaten.
Beschreibung:Liest Ereignis-Metadaten in Ereignis-Rückrufen
Konfiguration:Keine
Erforderlich für: addEventCallback
Abfragesignatur: queryPermission('read_event_metadata')
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Ereignismetadaten in Rückrufen lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_title
Anzeigename:Liest den Dokumenttitel.
Beschreibung:Liest document.title
.
Konfiguration:Keine
Erforderlich für: readTitle
Abfragesignatur: queryPermission('read_title')
Hinweise:Gibt an, ob eine benutzerdefinierte Vorlage die document.title
lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
const title = readTitle();
}
send_pixel
Anzeigename:Sendet Pixel
Beschreibung:Sendet eine GET-Anfrage an eine angegebene URL. Die Antwort wird nicht verarbeitet.
Konfiguration:Liste der zulässigen URL-Muster.
Erforderlich für: sendPixel
Abfragesignatur: queryPermission('send_pixel', <url>)
Hinweise:Bestimmt, ob eine benutzerdefinierte Vorlage eine GET-Anfrage senden kann und an welchen Ursprung.
Beispielcode
const queryPermission = require('queryPermission');
const sendPixel = require('sendPixel');
const url = 'https://www.example.com?foo=3';
if (queryPermission('send_pixel', url)) {
sendPixel(url);
}
set_cookies
Anzeigename:Hiermit wird ein Cookie gesetzt.
Beschreibung:Setzt ein Cookie mit dem angegebenen Namen und den angegebenen Parametern.
Konfiguration:Eine Tabelle mit zulässigen Cookie-Namen, jeweils mit optionalen Einschränkungen für Name, Domain, Pfad, secure
-Attribut und Ablaufdatum.
Erforderlich für: setCookie
Abfragesignatur: queryPermission('set_cookies', <name>, <options>)
Hinweise:Bestimmt, ob ein Cookie geschrieben werden kann, je nach Cookie-Namen, Domain, Pfad, secure
-Attribut und Ablaufdatum.
Beispielcode
const queryPermission = require('queryPermission');
const setCookie = require('setCookie');
const options = {
'domain': 'www.example.com',
'path': '/',
'max-age': 60*60*24*365,
'secure': true
};
if (queryPermission('set_cookies', 'info', options)) {
setCookie('info', 'xyz', options);
}
write_data_layer
Anzeigename:Schreibt Daten in die Datenschicht
Beschreibung:Schreibt Daten in die Datenebene.
Konfiguration: Eine Reihe von Schlüsselübereinstimmungsausdrücken, wobei eine Schlüsselübereinstimmung eine anführende Reihe von Punktbezug mit einem abschließenden Platzhalter sein kann. Mit Schlüsselabgleichsausdrücken wird festgelegt, welche Properties in die Datenschicht geschrieben werden dürfen.
Erforderlich für: gtagSet
Abfragesignatur: queryPermission('write_data_layer', <data layer key to
write from>)
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Daten in die Datenebene schreiben kann.
Beispielcode
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}