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 automatisch in Sandboxed JavaScript erkannt, je nachdem, welche APIs verwendet werden. Das passiert, wenn Änderungen im Editor für benutzerdefinierte Vorlagen vorgenommen werden (für einen schnellen Feedbackzyklus) 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 genauer zu definieren.
- Über die
queryPermission
API in Sandboxed JavaScript abfragbar.
access_globals
Anzeigename:Auf globale Variablen zugreifen
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 Browserbereich und kein JavaScript-Keyword sein. Enthält Kästchen für Lese-, Schreib- und Ausführungsberechtigungen, die den Zugriff regeln.
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:Legt fest, ob eine benutzerdefinierte Vorlage globale Werte lesen und/oder 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:Greift auf den lokalen Speicher zu
Beschreibung:Ermöglicht den Zugriff auf die angegebenen Schlüssel im lokalen Speicher.
Konfiguration:Liste der lokalen Speicherschlüssel, auf die zugegriffen werden kann. Dies ist ein einfaches Array von Schlüsseln ohne Platzhalter. Hat Kontrollkä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:Auf Vorlagenspeicher zugreifen
Beschreibung:Ermöglicht den Zugriff auf temporären Speicher für Vorlagen, der für die Lebensdauer der Seite bestehen bleiben kann.
Konfiguration:Keine
Erforderlich für: templateStorage
Anfragesignatur: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:Cookie-Wert(e) lesen
Beschreibung:Liest die Werte der Cookies mit dem angegebenen Namen.
Konfiguration:Liste der Namen von Cookies, die gelesen werden dürfen.
Erforderlich für: getCookieValues
Anfragesignatur:queryPermission('get_cookies', <name>)
Hinweise:Legt fest, ob ein Cookie je nach seinem Namen gelesen werden kann.
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:Verweis-URL lesen
Beschreibung:Ermöglicht den Lesezugriff auf eingeschränkte Teile des Referrers.
Konfiguration:Mit den folgenden booleschen Werten wird festgelegt, welcher Teil des Referrers gelesen werden kann. Ein bestimmter Teil des Referrers kann nur gelesen werden, wenn der entsprechende Teil true
ist. Der Aufrufer kann getReferrerUrl
ohne Angabe einer Komponente aufrufen, um die vollständige Referrer-URL zu erhalten, wenn alle diese booleschen Werte auf true
gesetzt sind. Wenn kein Wert festgelegt ist, lautet der Standardwert all
. Wenn ein Wert festgelegt ist, muss er ein Array von Komponenten sein, wobei eine Komponente eine der folgenden ist: protocol
, host
, port
, path
, query
oder extension
.
queryKeys
:Wenn „query“ (Abfrage) ausgewählt ist, kann der Vorlagenautor die Menge der 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
Anfragesignatur: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:Reads URL
Beschreibung:Gibt einen Teil oder die vollständige URL der aktuellen Seite zurück.
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 „true“ ist. Der Anrufer kann getUrl
ohne Angabe einer Komponente aufrufen, um die gesamte URL zu erhalten, wenn und nur wenn alle diese booleschen Werte auf true
gesetzt sind. Wenn kein Wert festgelegt ist, lautet der Standardwert all
. Wenn ein Wert festgelegt ist, muss er ein Array von Komponenten sein, wobei eine Komponente eine der folgenden ist: protocol
, host
, port
, path
, query
, extension
oder fragment
.
queryKeys
:Wenn „query“ (Abfrage) ausgewählt ist, kann der Vorlagenautor die Menge der Abfrageschlüssel, aus denen gelesen werden kann, weiter einschränken. Dies ist ein einfaches Array von Schlüsseln ohne Platzhalter.
Erforderlich für: getUrl
Anfragesignatur:queryPermission('get_url', <optional url component>,
<optional query key>)
Wenn angegeben, sollte die URL-Komponente einer der folgenden Werte sein: '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 „query_key“ das Argument des Abfragestrings sein, das vom Vorlagencode gelesen werden soll.
Hinweise:Legt fest, ob eine benutzerdefinierte Vorlage den aktuellen Standort 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 einschleusen
Beschreibung:Fügt einen unsichtbaren iFrame mit einer bestimmten URL ein.
Konfiguration:Liste der URL-Muster
Erforderlich für: injectHiddenIframe
Anfragesignatur:queryPermission('inject_hidden_iframe', <url>)
Hinweise:Gibt an, ob und von welchem Ursprung aus ein unsichtbarer iFrame in eine benutzerdefinierte Vorlage eingefügt werden kann.
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 einschleusen
Beschreibung:Fügt ein Skript in die Seite ein.
Konfiguration:Liste der URL-Muster
Erforderlich für: injectScript
Anfragesignatur:queryPermission('inject_script', <url>)
Hinweise:Gibt an, ob und von welchem Ursprung 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 Produktion. Standardmäßig wird das Logging nur im Debug- und Vorschaumodus aktiviert. Wenn die Berechtigung verweigert wird, gibt logToConsole
keinen Fehler aus, sondern unterdrückt die Log-Meldung.
Erforderlich für: logToConsole
Anfragesignatur:queryPermission('logging')
Hinweise:Steuert, ob ein benutzerdefiniertes Template 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:Datenschicht lesen
Beschreibung:Liest Daten aus dataLayer.
Konfiguration:Eine Reihe von Ausdrücken für den Schlüsselabgleich, wobei ein Schlüsselabgleich eine führende Reihe von durch Punkte getrennten Referenzen mit einem nachfolgenden Platzhalter sein kann. Mit Schlüsselübereinstimmungsausdrücken wird festgelegt, welche Properties aus der Datenschicht gelesen werden dürfen.
Erforderlich für: copyFromDataLayer
Anfragesignatur:queryPermission('read_data_layer', <data layer key to read
from>)
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Daten aus der Datenschicht 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_analytics_storage
Anzeigename:Berechtigt zum Lesen des Analytics-Speichers
Beschreibung:Damit können Vorlagen gespeicherte Analysedaten wie Client-IDs lesen.
Konfiguration:Keine
Erforderlich für: readAnalyticsStorage
Anfragesignatur:queryPermission('read_analytics_storage')
Hinweise:Gibt an, ob eine benutzerdefinierte Vorlage Daten aus dem Analytics-Speicher lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
const value = readAnalyticsStorage();
}
read_character_set
Anzeigename:Dokumentzeichensatz lesen
Beschreibung:Gibt document.characterSet
zurück.
Konfiguration:Keine
Erforderlich für: readCharacterSet
Anfragesignatur: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:Containerdaten lesen
Beschreibung:Liest Daten zum Container.
Konfiguration:Keine
Erforderlich für: getContainerVersion
Anfragesignatur:queryPermission('read_container_data')
Hinweise:Damit 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:Ereignis-Metadaten lesen
Beschreibung:Ereignis-Metadaten in Ereignis-Rückrufen lesen
Konfiguration:Keine
Erforderlich für: addEventCallback
Anfragesignatur:queryPermission('read_event_metadata')
Hinweise:Steuert, ob in Callbacks Ereignismetadaten aus einer benutzerdefinierten Vorlage gelesen werden können.
Beispielcode
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_title
Anzeigename:Dokumenttitel lesen
Beschreibung:Gibt document.title
zurück.
Konfiguration:Keine
Erforderlich für: readTitle
Anfragesignatur: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
Anfragesignatur:queryPermission('send_pixel', <url>)
Hinweise:Gibt an, ob ein benutzerdefiniertes Template 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:Setzt ein Cookie
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 Ablauf.
Erforderlich für: setCookie
Anfragesignatur:queryPermission('set_cookies', <name>, <options>)
Hinweise:Legt fest, ob ein Cookie geschrieben werden kann, abhängig von Cookiename, Domain, Pfad, Attribut secure
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:Datenschicht schreiben
Beschreibung:Schreibt Daten in dataLayer.
Konfiguration:Eine Reihe von Ausdrücken für den Schlüsselabgleich, wobei ein Schlüsselabgleich eine führende Reihe von durch Punkte getrennten Referenzen mit einem nachfolgenden Platzhalter sein kann. Mit Schlüsselübereinstimmungsausdrücken wird festgelegt, welche Eigenschaften in die Datenschicht geschrieben werden dürfen.
Erforderlich für: gtagSet
Anfragesignatur:queryPermission('write_data_layer', <data layer key to
write from>)
Hinweise:Hiermit wird festgelegt, ob ein benutzerdefiniertes Template in die Datenschicht schreiben darf.
Beispielcode
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}