In diesem Dokument werden die Berechtigungen für serverseitige benutzerdefinierte Vorlagen beschrieben.
Jede Berechtigung ist:
- Von APIs geprüft, die sie benötigen.
- Wird automatisch in JavaScript in einer Sandbox erkannt, je nachdem, welche APIs verwendet werden. Dies geschieht, wenn Änderungen im Editor für benutzerdefinierte Vorlagen (für eine schnelle Feedbackschleife) vorgenommen werden und wenn Code kompiliert wird, um zu prüfen, ob die richtigen Berechtigungen erzwungen werden.
- Kann im Editor für benutzerdefinierte Vorlagen bearbeitet werden, um die Berechtigung genauer zu definieren.
- In der Sandbox ausgeführter JavaScript-Code über die
queryPermission
API abfragbar.
Zugriff_BigQuery
Anzeigename:Zugriff auf BigQuery
Beschreibung:Ermöglicht den Zugriff auf BigQuery auf der Google Cloud Platform.
Konfiguration: Option, die Verwendung bestimmter Projekt-, Dataset- und Tabellenkombinationen mit BigQuery zu erlauben. Wenn Sie eine Projekt-ID-Konfiguration von GOOGLE_CLOUD_PROJECT
festlegen, kann die Umgebungsvariable GOOGLE_CLOUD_PROJECT
als Projekt-ID verwendet werden, wenn projectId
aus BigQuery API
parameter
ausgeschlossen ist.
Erforderlich für: BigQuery
Abfragesignatur:
queryPermission('access_bigquery', <operation>, <options>)
Hinweis: <operation>
ist ein String und kann folgende Werte haben:
- write
<options>
ist ein Objekt, das die folgenden Elemente enthält:
{
'projectId': <project_id>,
'datasetId': <dataset_id>,
'tableId': <table_id>
}
Beispielcode
const BigQuery = require('BigQuery');
const queryPermission = require('queryPermission');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
if (queryPermission('access_bigquery', 'write', connectionInfo)) {
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
}
Feuerwehr
Anzeigename: Zugriff auf Google Firestore
Beschreibung: Ermöglicht Zugriff auf Google Firestore.
Konfiguration:Option, die Verwendung bestimmter Kombinationen aus Projekt und Pfad (unterstützt von Platzhaltersyntax) für Firestore zulässig. Wenn Sie eine Projekt-ID-Konfiguration von GOOGLE_CLOUD_PROJECT
festlegen, kann die Umgebungsvariable GOOGLE_CLOUD_PROJECT
als Projekt-ID verwendet werden, wenn projectId
aus Firestore API parameter
ausgeschlossen ist.
Erforderlich für: Firestore
Abfragesignatur:
queryPermission('access_firestore', <operation>, <options>)
Hinweis: <operation>
ist ein String und kann folgende Werte haben:
- Lesen – Gewährt Zugriff zum Lesen und Abfragen von APIs
- write – Gewährt Zugriff zum Schreiben der API
- read_write – Gewährt Zugriff zum Lesen, Schreiben und Abfragen von APIs
<options>
ist ein Objekt, das die folgenden Elemente enthält:
{
'projectId': <project_id>,
'path': <path>
}
Beispielcode
const Firestore = require('Firestore');
const queryPermission = require('queryPermission');
const options = {
'projectId': 'gcp-cloud-project-id',
'path': 'collection/document',
};
if (queryPermission('access_firestore', 'read', options)) {
Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then(data.gtmOnSuccess, data.gtmOnFailure);
}
Zugriffsantwort
Display name (Anzeigename): Zugriff auf die Antwort
Description (Beschreibung): Ruft den Antworttext, die Header oder den Status auf.
Konfiguration: Option zum Zulassen eines beliebigen oder spezifischen Zugriffs mit Unteroptionen zum Steuern des Zugriffs auf verschiedene Unterkomponenten.
Erforderlich für:setPixelResponse
, setResponseBody
,
setResponseHeader
, setResponseStatus
Abfragesignatur:
queryPermission('access_response', 'write', <component>[, <optional component name>])
Hinweis: Diese Richtlinie bestimmt, ob auf die ausgehende HTTP-Antwortkomponente zugegriffen werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
if (queryPermission('access_response', 'write', 'header', 'Content-Type')) {
setResponseHeader('Content-Type', 'text/plain');
}
if (queryPermission('access_response', 'write', 'body')) {
setResponseBody('Not Found');
}
if (queryPermission('access_response', 'write', 'status')) {
setResponseStatus(404);
}
Zugriff auf Vorlagenvorlagen
Anzeigename:Zugriff auf Vorlagenspeicher
Beschreibung: Ermöglicht den Zugriff auf den temporären Speicher für Vorlagen, die für die Lebensdauer des serverseitigen Prozesses bestehen bleiben.
Konfiguration: Keine
Erforderlich für: templateDataStorage
Abfragesignatur: queryPermission('access_template_storage')
Beispielcode
const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateDataStorage.getItemCopy(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 gelesen werden dürfen
Erforderlich für: getCookieValues
Abfragesignatur: queryPermission('get_cookies', <name>)
Hinweis: Diese Richtlinie bestimmt, ob ein Cookie je nach Name 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);
}
Logging
Anzeigename:Logs to console
Beschreibung: Wird in der Entwicklerkonsole und im Vorschaumodus von Tag Manager protokolliert.
Konfiguration:Option zum Aktivieren des Loggings in der Produktion. Standardmäßig ist nur das Logging bei der Fehlerbehebung/Vorschau aktiviert. Wenn die Berechtigung verweigert wird, gibt logToConsole
keinen Fehler aus, aber unterdrückt die Lognachricht.
Erforderlich für: logToConsole
Abfragesignatur: queryPermission('logging')
Hinweis: Steuert, 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');
Nachricht verwenden
Anzeigename:Verwendet Nachrichten
Beschreibung: Sendet oder empfängt Nachrichten mit der addMessageListener
oder sendMessage
API.
Konfiguration: Option zur Angabe des Nachrichtentyps und ob die Vorlage zuhören, senden oder beides haben kann.
Erforderlich für:addMessageListener
, sendMessage
Abfragesignatur: queryPermission('use_message', <usage>, <message type>)
Hinweis: Die Nutzung kann listen
, send
oder listen_and_send
sein.
Beispielcode
const queryPermission = require('queryPermission');
const sendMessage = require('sendMessage');
if (queryPermission('use_message', 'send', 'set_cookie')) {
sendMessage('set_cookie', {name: 'foo', value: 'bar'});
}
Daten aus Lesecontainern
Anzeigename:Liest Containerdaten
Beschreibung:Liest Daten zum Container.
Konfiguration: Keine.
Erforderlich für:getClientName
, getContainerVersion
Abfragesignatur: queryPermission('read_container_data')
Hinweise: Steuert, ob eine benutzerdefinierte Vorlage Containerdaten lesen kann.
Beispielcode
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
Ereignisdaten lesen
Anzeigename: Liest Ereignisdaten
Beschreibung: Liest Daten aus dem Ereignis.
Konfiguration:Option, die jeden Zugriff oder einen bestimmten Zugriff zulässt, der von einer Liste zulässiger Schlüsselpfade (Platzhaltersyntax) unterstützt wird.
Erforderlich für: getAllEventData
, getEventData
Abfragesignatur: queryPermission('read_event_data'[, <optional key>])
Hinweise: Steuert, ob eine benutzerdefinierte Vorlage Ereignisdaten in einem bestimmten Schlüsselpfad (oder alle Ereignisdaten, wenn kein Schlüsselpfad angegeben wird) lesen kann.
Beispielcode
const getAllEventData = require('getAllEventData');
const queryPermission = require('queryPermission');
if (queryPermission('read_event_data')) {
return getAllEventData();
}
const getEventData = require('getEventData');
const queryPermission = require('queryPermission');
const keyPath = 'parentField.childField';
if (queryPermission('read_event_data', keyPath)) {
return getEventData(keyPath);
}
Leseereignis-Metadaten
Anzeigename: Liest Ereignismetadaten
Beschreibung:Ereignismetadaten in Ereignis-Callbacks lesen
Konfiguration:Keine
Erforderlich für: addEventCallback
Abfragesignatur: queryPermission('read_event_metadata')
Hinweise: Steuert, ob eine benutzerdefinierte Vorlage Ereignismetadaten in Callbacks lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
Anfrage lesen
Anzeigename: Liest die HTTP-Anfrage
Description (Beschreibung): Liest Anfrageheader, Suchparameter, Text, Pfad oder Remote-IP-Adresse.
Konfiguration: Option zum Zulassen eines beliebigen oder spezifischen Zugriffs mit Unteroptionen zum Steuern des Zugriffs auf verschiedene Unterkomponenten.
Erforderlich für:extractEventsFromMpv1
, extractEventsFromMpv2
,
getRemoteAddress
, getRequestBody
, getRequestHeader
,
getRequestPath
, getRequestQueryParameter
, getRequestQueryParameters
,
getRequestQueryString
Abfragesignatur:
queryPermission('read_request', <component>[, <optional component name>])
Hinweis: Diese Richtlinie bestimmt, ob auf die eingehende HTTP-Antwortkomponente zugegriffen werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const getRequestBody = require('getRequestBody');
const getRequestHeader = require('getRequestHeader');
let body, contentType;
if (queryPermission('read_request', 'body')) {
body = getRequestBody();
}
if (queryPermission('read_request', 'header', 'content-type')) {
contentType = getRequestHeader('content-type');
}
if (body && contentType == 'application/json') { ... }
return_response (Antwort zurückgeben)
Display name (Antwortname): Gibt die Antwort zurück.
Beschreibung:Gibt die Antwort an den Anrufer zurück.
Konfiguration:Keine
Erforderlich für: returnResponse
Abfragesignatur: queryPermission('return_response')
Hinweise: Diese Berechtigung hat keine Felder, die begrenzt werden können, und wird normalerweise nicht abgefragt.
Run-Container
Anzeigename: Führt den Container aus
Beschreibung: Führt den Container mit einem Ereignis aus.
Konfiguration: Keine
Erforderlich für: runContainer
Abfragesignatur: queryPermission('run_container')
Hinweise:Diese Berechtigung hat keine Felder, die begrenzt werden können, und wird normalerweise nicht abgefragt.
Senden_http
Anzeigename: Sendet HTTP-Anfragen
Beschreibung: Sendet eine HTTP-Anfrage an eine angegebene URL.
Erforderlich für: getGoogleScript
, sendEventToGoogleAnalytics
,
sendHttpGet
, sendHttpRequest
Abfragesignatur: queryPermission('send_http', <url>)
Hinweis: Über diese URL wird festgelegt, ob eine HTTP-Anfrage gesendet werden kann. Für eine sichere Verbindung sind nur sichere HTTPS-URLs zulässig.
Beispielcode
const queryPermission = require('queryPermission');
const sendHttpGet = require('sendHttpGet');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_http', url)) {
sendHttpGet(url);
}
send_pixel_from_browser
Anzeigename:Sendet Pixel über Browser
Beschreibung: Sendet eine GET-Anfrage über den Browser an eine angegebene URL.
Erforderlich für: sendPixelFromBrowser
Abfragesignatur: queryPermission('send_pixel_from_browser', <url>)
Hinweise: Abhängig von der URL wird festgelegt, ob eine Anfrage über den Browser gesendet werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const sendPixelFromBrowser = require('sendPixelFromBrowser');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_pixel_from_browser', url)) {
sendPixelFromBrowser(url);
}
Cookies setzen
Anzeigename: Setzt ein Cookie
Beschreibung: Es wird ein Cookie mit dem angegebenen Namen und den angegebenen Parametern erstellt.
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
Abfragesignatur: queryPermission('set_cookies', <name>, <options>)
Hinweis: Es wird gesteuert, ob der Antwort einen bestimmten „Set-Cookie“-Header hinzugefügt wird. Das richtet sich nach dem Cookienamen, der Domain, dem Pfad, dem secure
-Attribut und dem 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);
}