In diesem Dokument werden die APIs für das serverseitige Tagging beschrieben.
addEventCallback
Registriert eine Rückruffunktion, die am Ende eines Ereignisses aufgerufen wird. Der Callback wird aufgerufen, wenn alle Tags für das Ereignis ausgeführt wurden. Dem Callback werden zwei Werte übergeben: die ID des Containers, der die Funktion aufruft, und ein Objekt, das Informationen zum Ereignis enthält.
Wenn diese API in einem Tag verwendet wird, wird sie dem aktuellen Ereignis zugeordnet. Wenn diese API in einem Client verwendet wird, muss sie mithilfe der bindToEvent
-Funktion der runContainer
API an ein bestimmtes Ereignis gebunden sein. Weitere Informationen finden Sie im Beispiel.
Syntax
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
callback |
Funktion | Die am Ende des Ereignisses aufzurufende Funktion. |
Das eventData
-Objekt enthält die folgenden Daten:
Schlüsselname | Typ | Beschreibung |
---|---|---|
tags |
Array |
Ein Array von Tag-Datenobjekten. Jedes Tag, das während des Ereignisses ausgelöst wurde, hat einen Eintrag in diesem Array. Das Tag-Datenobjekt enthält die ID des Tags (id ), seinen Ausführungsstatus (status ) und seine Ausführungszeit (executionTime ). Die Tag-Daten enthalten außerdem zusätzliche Tag-Metadaten, die im Tag konfiguriert wurden.
|
In einem Client:
const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
runContainer(evt, /* onComplete= */ (bindToEvent) => {
bindToEvent(addEventCallback)((containerId, eventData) => {
logToConsole('Event Number: ' + i);
eventData.tags.forEach((tag) => {
logToConsole('Tag ID: ' + tag.id);
logToConsole('Tag Status: ' + tag.status);
logToConsole('Tag Execution Time: ' + tag.executionTime);
});
});
if (events.length === ++eventsCompleted) {
returnResponse();
}
});
});
In einem Tag:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
Zugehörige Berechtigungen
callLater
Plant einen asynchronen Aufruf einer Funktion. Die Funktion wird aufgerufen, nachdem der aktuelle Code zurückgegeben wurde. Dies entspricht setTimeout(<function>, 0)
.
Beispiel
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
Syntax
callLater(function)
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
function |
Funktion | Die aufzurufende Funktion. |
Zugehörige Berechtigungen
Keine.
claimRequest
Verwenden Sie diese API in einem Client, um die Anfrage zu beanspruchen. Sobald eine Anfrage beansprucht wurde, führt der Container keine weiteren Clients aus.
Diese API löst eine Ausnahme aus, wenn sie in einem Tag oder einer Variablen aufgerufen wird. Diese API löst eine Ausnahme aus, wenn sie nach der Rückgabe des Clients aufgerufen wird (z.B. bei einem asynchronen Callback wie in callLater
oder der onComplete
-Funktion runContainer
).
Ein Client sollte die Anfrage über diese API beanspruchen, bevor die runContainer
API aufgerufen wird.
Beispiel
const claimRequest = require('claimRequest');
claimRequest();
Syntax
claimRequest();
Zugehörige Berechtigungen
Keine.
computeEffectiveTldPlusOne
Gibt die effektive Top-Level-Domain + 1 (eTLD+1) der angegebenen Domain oder URL zurück. eTLD+1 wird berechnet, indem die Domain anhand der Regeln für die Public Suffix List (öffentliche Suffixliste) ausgewertet wird. eTLD+1 ist in der Regel die Domain der höchsten Ebene, auf der Sie ein Cookie setzen können.
Wenn das Argument null oder nicht definiert ist, wird der Argumentwert unverändert zurückgegeben. Andernfalls wird das Argument in einen String umgewandelt. Wenn das Argument keine gültige Domain oder URL ist, wird ein leerer String zurückgegeben. Wenn der Server die öffentliche Suffixliste nicht abrufen kann, wird der Argumentwert unverändert zurückgegeben.
Beispiel
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
Syntax
computeEffectiveTldPlusOne(domainOrUrl);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
domainOrUrl |
String | Eine Domain oder URL, auf der eTLD+1 berechnet werden soll. |
Zugehörige Berechtigungen
Keine.
createRegex
Erstellt eine neue Regex-Instanz und gibt sie in einem Objekt zurück. Sie können nicht direkt auf den regulären Ausdruck zugreifen. Sie können sie jedoch an die testRegex
API, String.replace()
, String.match()
und String.search()
übergeben.
Gibt null
zurück, wenn der reguläre Ausdruck ungültig oder Re2 auf dem Server nicht verfügbar ist.
Diese API verwendet eine Re2. Das Docker-Image des Servers muss mindestens die Version 2.0.0 haben.
Beispiel
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
Syntax
createRegex(pattern, flags);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
pattern |
String | Text des regulären Ausdrucks. |
flags |
String | Ein optionaler String, der die Flags für den zu erstellenden regulären Ausdruck enthält. „g“ (global) und „i“ (Groß-/Kleinschreibung ignorieren) werden unterstützt. Alle anderen Zeichen werden ignoriert. |
Zugehörige Berechtigungen
Keine.
Mindestversion der Image-Version
decodeUri
Decodiert alle codierten Zeichen im bereitgestellten URI. Gibt einen String zurück, der den decodierten URI darstellt. Gibt undefined
zurück, wenn eine ungültige Eingabe angegeben ist.
Beispiel
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
Syntax
decodeUri(encoded_uri);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
encoded_uri |
String |
Ein URI, der mit encodeUri() oder auf andere Weise codiert wurde.
|
Zugehörige Berechtigungen
Keine.
decodeUriComponent
Decodiert alle codierten Zeichen in der bereitgestellten URI-Komponente. Gibt einen String zurück, der die decodierte URI-Komponente darstellt. Gibt undefined
zurück, wenn eine ungültige Eingabe angegeben wird.
Beispiel
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
Syntax
decodeUriComponent(encoded_uri_component);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
encoded_uri_component |
String |
Eine URI-Komponente, die durch encodeUriComponent() oder auf andere Weise codiert wurde.
|
Zugehörige Berechtigungen
Keine.
encodeUri
Gibt einen codierten URI (Uniform Resource Identifier) zurück, indem Sonderzeichen maskiert werden. Gibt einen String zurück, der den als URI codierten String darstellt.
Beispiel
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
Syntax
encodeUri(uri);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
uri |
String | Einen vollständigen URI. |
Zugehörige Berechtigungen
Keine.
encodeUriComponent
Gibt einen codierten URI (Uniform Resource Identifier) zurück, indem Sonderzeichen maskiert werden. Gibt einen String zurück, der den als URI codierten String darstellt.
Beispiel
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
Syntax
encodeUriComponent(str);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
str |
String | Eine Komponente eines URI. |
Zugehörige Berechtigungen
Keine.
extractEventsFromMpv1
Übersetzt eine eingehende Measurement Protocol V1-Anfrage in eine Liste von Ereignissen im einheitlichen Schemaformat. Gibt die Liste der extrahierten Ereignisse zurück. Ein Fehler wird ausgegeben, wenn die Anfrage nicht das richtige Format hat.
Beispiel
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
Syntax
extractEventsFromMpv1();
Zugehörige Berechtigungen
Erfordert die Berechtigung read_request
. Die Berechtigung muss so konfiguriert sein, dass sie Zugriff auf mindestens Folgendes zulässt:
body
query parameters
extractEventsFromMpv2
Übersetzt eine eingehende Measurement Protocol V2-Anfrage in eine Liste von Ereignissen im einheitlichen Schemaformat. Gibt die Liste der extrahierten Ereignisse zurück. Ein Fehler wird ausgegeben, wenn die Anfrage nicht das richtige Format hat.
Beispiel
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
Syntax
extractEventsFromMpv2();
Zugehörige Berechtigungen
Erfordert die Berechtigung read_request
. Die Berechtigung muss so konfiguriert sein, dass sie Zugriff auf mindestens Folgendes zulässt:
body
query parameters
fromBase64
Decodiert einen base64-codierten String. Gibt undefined
zurück, wenn die Eingabe ungültig ist.
Syntax
fromBase64(base64EncodedString);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
base64EncodedString |
String | Base64-codierter String. |
Beispiel
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
Zugehörige Berechtigungen
Keine.
generateRandom
Gibt eine zufällige Zahl (Ganzzahl) innerhalb des angegebenen Bereichs zurück.
Beispiel
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
Syntax
generateRandom(min, max);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
min |
number | Minimaler potenzieller Wert der zurückgegebenen Ganzzahl (einschließlich). |
max |
number | Maximaler potenzieller Wert der zurückgegebenen Ganzzahl (einschließlich). |
Zugehörige Berechtigungen
Keine.
getAllEventData
Gibt eine Kopie der Ereignisdaten zurück.
Syntax
getAllEventData();
Zugehörige Berechtigungen
getClientName
Gibt einen String zurück, der den Namen des aktuellen Clients enthält.
Syntax
getClientName();
Zugehörige Berechtigungen
getContainerVersion
Gibt ein Objekt mit Daten über den aktuellen Container zurück. Das zurückgegebene Objekt hat die folgenden Felder:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
Beispiel
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
Syntax
getContainerVersion();
Zugehörige Berechtigungen
getCookieValues
Gibt ein Array zurück, das die Werte aller Cookies mit dem angegebenen Namen enthält.
Beispiel
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
Syntax
getCookieValues(name[, noDecode]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
name |
String | Name des Cookies. |
noDecode |
boolean |
Bei true werden die Cookiewerte vor der Rückgabe nicht decodiert. Die Standardeinstellung ist false .
|
Zugehörige Berechtigungen
getEventData
Gibt eine Kopie des Werts im angegebenen Pfad in den Ereignisdaten zurück. Gibt undefined
zurück, wenn keine Ereignisdaten oder im angegebenen Pfad kein Wert vorhanden ist.
Beispiel
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
keyPath |
Beliebig |
Der Pfad des Schlüssels. Die Pfadkomponenten sind durch Punkte getrennt. Die Pfadkomponenten können Schlüssel in einem Objekt oder Indexe in einem Array sein. Wenn keyPath kein String ist, wird er in einen String umgewandelt.
|
Syntax
getEventData(keyPath);
Zugehörige Berechtigungen
getGoogleAuth
Gibt ein Autorisierungsobjekt zurück, das bei Verwendung mit sendHttpGet
oder sendHttpRequest
einen Autorisierungsheader für Google Cloud APIs enthält. Diese API verwendet Standardanmeldedaten für Anwendungen, um automatisch Anmeldedaten aus der Serverumgebung zu finden.
Beispiel
const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');
const auth = getGoogleAuth({
scopes: ['https://www.googleapis.com/auth/datastore']
});
sendHttpGet(
'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
{authorization: auth}
).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
logToConsole('Result: ' + result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
});
Syntax
getGoogleAuth(scopes);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
scopes
|
Array | Ein Array von OAuth 2.0 Google API-Bereichen, für die der Zugriff angefordert werden soll. |
Zugehörige Berechtigungen
Erfordert die Berechtigung use_google_credentials
. Die Berechtigung muss mit einem oder mehreren zulässigen Bereichen konfiguriert sein.
getGoogleScript
Ruft eine Ressource aus einem vordefinierten Satz von Google-Skripts ab und gibt mit dem Skript und den zugehörigen Caching-Metadaten eine Zusage zurück.
Das Promise wird in ein Objekt aufgelöst, das zwei Schlüssel enthält: script
und metadata
. Wenn die Anfrage fehlschlägt, wird das Promise mit einem reason
-Schlüssel abgelehnt.
Das metadata
-Objekt enthält basierend auf den Ressourcenantwortheadern die folgenden Caching-Metadaten. Jedes Feld ist nur vorhanden, wenn der entsprechende Header in der Ressourcenantwort vorhanden ist.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
Beispiel
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
Syntax
getGoogleScript(script[, options]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
script |
String |
Der Name des Skripts. Unterstützte Skripts sind 'ANALYTICS' , 'GTAG' und 'GTM' .Mit der Option 'ANALYTICS' wird das Google Analytics-Skript aus https://www.google-analytics.com/analytics.js abgerufen.Mit der Option 'GTAG' wird das allgemeine Website-Tag-Script (gtag.js) von https://www.googletagmanager.com/gtag/js abgerufen.Mit der Option 'GTM' wird das Google Tag Manager-Skript aus https://www.googletagmanager.com/gtm.js abgerufen.
|
options |
Gegenstand | Optionale Anfrageoptionen. Unten finden Sie die unterstützten Optionen. |
Optionen
Wahltaste | Typ | Beschreibung |
---|---|---|
id |
String |
Gilt für 'GTAG' mit der gtag-Mess-ID und 'GTM' mit der Webcontainer-ID (z. B. GTM-XXXX).
|
debug |
Beliebig | Bei Wahrheit wird die Debug-Version des Messskripts angefordert und zurückgegeben. |
timeout |
number |
Das Zeitlimit für Anfragen in Millisekunden. Nicht positive Werte werden ignoriert. Wenn bei der Anfrage eine Zeitüberschreitung auftritt, wird der Callback mit undefined für den Skriptwert und {} für das Metadatenobjekt aufgerufen.
|
Nicht erkannte Optionstasten werden ignoriert.
Zugehörige Berechtigungen
Erfordert die Berechtigung send_http
. Die Berechtigung muss so konfiguriert sein, dass Zugriff auf mindestens Folgendes gewährt wird:
- Google Domains zulassen
getRemoteAddress
Gibt eine String-Darstellung der IP-Adresse zurück, von der die Anfrage stammt, z.B. 12.345.67.890
für IPv4 oder 2001:0db8:85a3:0:0:8a2e:0370:7334
für IPv6, indem Anfrageheader wie Forwarded und X-Forwarded-For gelesen werden.
Hinweis: Diese API versucht, die ursprüngliche IP-Adresse bestmöglich zu ermitteln, kann jedoch nicht garantieren, dass das Ergebnis korrekt ist.
Syntax
getRemoteAddress();
Zugehörige Berechtigungen
Erfordert die Berechtigung read_request
. Die Berechtigung muss so konfiguriert sein, dass sie Zugriff auf mindestens Folgendes zulässt:
- Überschriften
Forwarded
undX-Forwarded-For
- Remote-IP-Adresse
getRequestBody
Gibt den Anfragetext als String zurück, falls vorhanden, andernfalls als undefined
.
Syntax
getRequestBody();
Zugehörige Berechtigungen
getRequestHeader
Gibt den Wert des benannten Anfrageheaders als String zurück, falls vorhanden, oder als undefined
. Wenn der Header wiederholt wird, werden die zurückgegebenen Werte mit ', '
zusammengeführt.
Beispiel
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
Syntax
getRequestHeader(headerName);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
headerName |
String | Der Name der Kopfzeile. Bei diesem Wert wird die Groß-/Kleinschreibung nicht berücksichtigt. |
Zugehörige Berechtigungen
getRequestMethod
Gibt die Anfragemethode, z.B. 'GET'
oder 'POST'
, als String zurück.
Beispiel
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
Syntax
getRequestMethod();
Zugehörige Berechtigungen
Keine.
getRequestPath
Gibt den Anfragepfad ohne den Abfragestring zurück. Lautet die URL beispielsweise '/foo?id=123'
, wird '/foo'
zurückgegeben. Entfernt das URL-Präfix des Servercontainers automatisch aus dem Pfad. Wenn die Servercontainer-URL beispielsweise https://example.com/analytics
und der Anfragepfad '/analytics/foo'
ist, wird '/foo'
zurückgegeben.
Beispiel
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
Syntax
getRequestPath();
Zugehörige Berechtigungen
getRequestQueryParameter
Gibt den decodierten Wert des benannten Abfragestringparameters als String oder als undefined
zurück, wenn der Parameter nicht vorhanden ist. Wenn der Parameter im Abfragestring wiederholt wird, wird der erste Wert zurückgegeben, der im Abfragestring erscheint.
Beispiel
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
Syntax
getRequestQueryParameter(name);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
name |
String | Der Name des Abfrageparameters. |
Zugehörige Berechtigungen
getRequestQueryParameters
Gibt die Suchparameter der eingehenden HTTP-Anfrage als Objekt zurück, das die Namen der Abfrageparameter den entsprechenden Werten zuordnet. Die Parameternamen und -werte werden decodiert.
Beispiel
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
Syntax
getRequestQueryParameters();
Zugehörige Berechtigungen
getRequestQueryString
Gibt die Anfrageabfrage als String ohne vorangestelltes Fragezeichen oder als leeren String zurück, wenn die Anfrage-URL keinen Abfragestring enthält.
Beispiel
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
Syntax
getRequestQueryString();
Zugehörige Berechtigungen
getTimestamp
Veraltet. Bevorzugen Sie getTimestampMillis.
Gibt eine Zahl zurück, die die von Date.now()
zurückgegebene aktuelle Zeit in Millisekunden seit der Unix-Epoche darstellt.
Syntax
getTimestamp();
Zugehörige Berechtigungen
Keine.
getTimestampMillis
Gibt eine Zahl zurück, die die von Date.now()
zurückgegebene aktuelle Zeit in Millisekunden seit der Unix-Epoche darstellt.
Syntax
getTimestampMillis();
Zugehörige Berechtigungen
Keine.
getType
Gibt einen String zurück, der den Typ des angegebenen Werts beschreibt.
Eingabetyp | Zurückgegebener Wert |
---|---|
String | 'string' |
number | 'number' |
boolean | 'boolean' |
null | 'null' |
nicht definiert | 'undefined' |
Array | 'array' |
Objekt | 'object' |
Funktion | 'function' |
Beispiel
const getType = require('getType');
const type = getType(value);
if (type === 'string') {
// Handle string input.
} else if (type === 'number') {
// Handle numeric input.
} else {
logToConsole('Unsupported input type: ', type);
}
Syntax
getType(value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
value |
Beliebig | Eingabewert. |
Zugehörige Berechtigungen
Keine.
hmacSha256
Berechnet eine codierte Signatur mithilfe von Hash-based Message Authentication Code (HMAC) mit SHA-256. Die Standardeinstellung ist base64url
-Codierung.
Wenn Sie diese API verwenden möchten, legen Sie die Umgebungsvariable SGTM_CREDENTIALS
auf dem Server auf den Pfad einer UTF-8-codierten JSON-Schlüsseldatei im folgenden Format fest:
{
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
Die Werte sind base64-codierte HMAC-Schlüssel.
Beispiel
const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');
const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');
const jwt = header + "." + claim + '.' + signature;
Syntax
hmacSha256(data, keyId, options)
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
data |
String | Die Daten, mit denen der HMAC-Wert berechnet werden soll. |
keyId
|
String | Eine Schlüssel-ID aus der JSON-Schlüsseldatei, die auf den zu verwendenden Schlüssel verweist. |
options
|
Gegenstand | Optionale API-Konfiguration. Weitere Informationen finden Sie unter Optionen unten. |
Optionen
Wahltaste | Typ | Beschreibung |
---|---|---|
outputEncoding
|
String | Gibt das Codierungsformat für den Rückgabewert an. Unterstützte Formate sind hex , base64 oder base64url . Wenn keine Angabe erfolgt, wird standardmäßig base64url verwendet. |
Zugehörige Berechtigungen
Mindestversion der Image-Version
isRequestMpv1
Gibt true
zurück, wenn die eingehende Anfrage eine Measurement Protocol V1-Anfrage ist, andernfalls false
.
Beispiel
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
Syntax
isRequestMpv1();
Zugehörige Berechtigungen
Keine.
isRequestMpv2
Gibt true
zurück, wenn die eingehende Anfrage eine Measurement Protocol V2-Anfrage ist, andernfalls false
.
Beispiel
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
Syntax
isRequestMpv2();
Zugehörige Berechtigungen
Keine.
logToConsole
Protokolliert die Argumente in der Konsole.
Diese Logs sind im Log-Explorer der Google Cloud Console sichtbar.
Führen Sie im Log-Explorer die Abfrage logName =~ "stdout"
aus, um von dieser API erstellte Logeinträge anzusehen.
Beispiel
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
Syntax
logToConsole(argument1[, argument2, ...]);
Parameter
Die API akzeptiert ein oder mehrere Argumente, die bei Bedarf in einen String umgewandelt und in der Konsole protokolliert werden.
Zugehörige Berechtigungen
makeInteger
Wandelt den gegebenen Wert in eine Zahl (Ganzzahl) um.
Syntax
makeInteger(value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
value |
alle Typen | Wert, der konvertiert werden soll. |
Zugehörige Berechtigungen
Keine.
makeNumber
Wandelt den gegebenen Wert in eine Zahl um.
Syntax
makeNumber(value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
value |
alle Typen | Wert, der konvertiert werden soll. |
Zugehörige Berechtigungen
Keine.
makeString
Gibt den gegebenen Wert als string zurück.
Syntax
makeString(value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
value |
alle Typen | Wert, der konvertiert werden soll. |
Zugehörige Berechtigungen
Keine.
makeTableMap
Wandelt ein einfaches Tabellenobjekt mit zwei Spalten in einen Map
um. Damit wird ein SIMPLE_TABLE
-Vorlagenfeld mit zwei Spalten in ein überschaubares Format geändert.
Die folgende Funktion könnte beispielsweise ein Tabellenobjekt konvertieren:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
in eine Karte umwandeln:
{
'k1': 'v1',
'k2': 'v2'
}
Gibt ein Objekt zurück: Die konvertierten Map
der Schlüssel/Wert-Paare wurden hinzugefügt. Andernfalls wird null
zurückgegeben.
Syntax
makeTableMap(tableObj, keyColumnName, valueColumnName);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
tableObj |
Liste |
Das Tabellenobjekt, das konvertiert werden soll. Es ist eine Liste von Karten, bei denen jede Map eine Zeile in der Tabelle darstellt. Jeder Attributname in einem Zeilenobjekt ist der Spaltenname und der Attributwert der Spaltenwert in der Zeile.
|
keyColumnName |
String |
Name der Spalte, deren Werte im konvertierten Map zu Schlüsseln werden.
|
valueColumnName |
String |
Name der Spalte, deren Werte in der konvertierten Map zu Werten werden.
|
Zugehörige Berechtigungen
Keine.
parseUrl
Gibt ein Objekt zurück, das alle Komponenten einer bestimmten URL enthält, ähnlich wie das URL
-Objekt.
Diese API gibt bei jeder fehlerhaften URL undefined
zurück. Bei korrekt formatierten URLs weisen Felder, die nicht im URL-String vorhanden sind, einen leeren String bzw. im Fall von searchParams
ein leeres Objekt auf.
Das zurückgegebene Objekt enthält die folgenden Felder:
{
href: string,
origin: string,
protocol: string,
username: string,
password: string,
host: string,
hostname: string,
port: string,
pathname: string,
search: string,
searchParams: Object<string, (string|Array)>,
hash: string,
}
Beispiel
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
Syntax
parseUrl(url);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
url |
String | Die vollständige URL, die geparst wird. |
Zugehörige Berechtigungen
Keine.
returnResponse
Leert die Antwort, die zuvor von anderen Vorlagen festgelegt wurde. Dazu werden die APIs verwendet, die die Antwort ändern, darunter setCookie, setPixelResponse, setResponseBody, setResponseHeader und setResponseStatus. Die Standardeinstellung ist der HTTP-Statuscode 200, ein leerer Textkörper und keine Header.
Es wird empfohlen, diese API aus einer Clientvorlage zu verwenden.
Syntax
returnResponse();
Beispiel
Zugehörige Berechtigungen
runContainer
Führt die Containerlogik (Variablen, Trigger, Tags) im Bereich eines Ereignisses aus. Wenn diese API während der Containerausführung aufgerufen wird, wird der Container noch einmal ausgeführt.
Die Callbacks onComplete
und onStart
empfangen eine Funktion namens bindToEvent
. Verwenden Sie bindToEvent
, um eine API im Kontext des Ereignisses auszuführen.
Weitere Informationen finden Sie im addEventCallback-Beispiel.
Es wird empfohlen, diese API aus einer Clientvorlage zu verwenden.
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
Syntax
runContainer(event, onComplete, onStart);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
event |
Gegenstand | Die Ereignisparameter. |
onComplete |
Funktion | Ein Callback, der aufgerufen wird, nachdem alle Tags ausgelöst wurden. |
onStart |
Funktion | Ein Callback, der sofort aufgerufen wird, bevor die Tags ausgelöst werden. |
Zugehörige Berechtigungen
sendEventToGoogleAnalytics
Sendet ein einzelnes Ereignis unter Verwendung von allgemeinen Ereignisdaten an Google Analytics und gibt eine Zusage zurück, die in ein Objekt mit einem location
-Schlüssel aufgelöst oder für ein Objekt mit einem reason
-Schlüssel abgelehnt wird. Das Ziel, also Universal Analytics oder Google Analytics 4, basiert auf der Mess-ID in den Ereignisdaten.
Das Feld location
ist auf den Header location
festgelegt, falls vorhanden.
Beispiel
const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}).catch((error) => {
logToConsole(error.reason);
setResponseStatus(500);
data.gtmOnFailure();
});
Syntax
sendEventToGoogleAnalytics(event);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
event |
Gegenstand | Das Ereignis im einheitlichen Schemaformat. |
Zugehörige Berechtigungen
Erfordert die Berechtigung send_http
. Die Berechtigung muss so konfiguriert sein, dass Zugriff auf mindestens Folgendes gewährt wird:
- Google Domains zulassen
sendHttpGet
Sendet eine HTTP-GET-Anfrage an die angegebene URL und gibt ein Promise zurück, das mit dem Ergebnis aufgelöst wird, sobald die Anfrage abgeschlossen ist oder das Zeitlimit überschritten wurde.
Das aufgelöste Ergebnis ist ein Objekt, das drei Schlüssel enthält: statusCode
, headers
und body
. Wenn die Anfrage fehlgeschlagen ist (z. B. ungültige URL, keine Route zum Host oder fehlgeschlagene SSL-Verhandlung), wird das Promise mit {reason:
'failed'}
abgelehnt. Wenn die Option timeout
festgelegt wurde und das Zeitlimit für die Anfrage überschritten wurde, wird die Versprechen mit folgendem Befehl abgelehnt: {reason: 'timed_out'}
Beispiel
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
Syntax
sendHttpGet(url[, options]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
url |
String | Die angeforderte URL |
options
|
Gegenstand | Optionale Anfrageoptionen. Weitere Informationen finden Sie unter Optionen unten. |
Optionen
Wahltaste | Typ | Beschreibung |
---|---|---|
headers |
String | Zusätzliche Anfrageheader. |
timeout
|
number | Das Zeitlimit in Millisekunden, bevor die Anfrage abgebrochen wird. Die Standardeinstellung ist 15000 . |
authorization
|
Gegenstand | Optionales Autorisierungsobjekt aus dem Aufruf von getGoogleAuth zum Einbeziehen von Autorisierungsheadern bei Anfragen an googleapis.com . |
Zugehörige Berechtigungen
sendHttpRequest
Sendet eine HTTP-Anfrage an die angegebene URL und gibt ein Promise zurück, das mit der Antwort aufgelöst wird, sobald die Anfrage abgeschlossen ist oder das Zeitlimit überschritten wurde.
Das aufgelöste Ergebnis ist ein Objekt, das drei Schlüssel enthält: statusCode
, headers
und body
. Wenn die Anfrage fehlgeschlagen ist (z. B. ungültige URL, keine Route zum Host oder fehlgeschlagene SSL-Verhandlung), wird das Promise mit {reason:
'failed'}
abgelehnt. Wenn die Option timeout
festgelegt wurde und das Zeitlimit für die Anfrage überschritten wurde, wird die Versprechen mit folgendem Befehl abgelehnt: {reason: 'timed_out'}
Beispiel
const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
headers: {key: 'value'},
method: 'POST',
timeout: 500,
}, postBody).then((result) => {
setResponseStatus(result.statusCode);
setResponseBody(result.body);
setResponseHeader('cache-control', result.headers['cache-control']);
});
Syntax
sendHttpRequest(url[, options[, body]]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
url |
String | Die angeforderte URL |
options
|
Gegenstand | Optionale Anfrageoptionen. Weitere Informationen finden Sie unter Optionen unten. |
body |
String | Optionaler Anfragetext. |
Optionen
Wahltaste | Typ | Beschreibung |
---|---|---|
headers |
String | Zusätzliche Anfrageheader. |
method |
Gegenstand | Die Anfragemethode. Die Standardeinstellung ist GET . |
timeout
|
number | Das Zeitlimit in Millisekunden, bevor die Anfrage abgebrochen wird. Die Standardeinstellung ist 15000 . |
authorization
|
Gegenstand | Optionales Autorisierungsobjekt aus dem Aufruf von getGoogleAuth zum Einbeziehen von Autorisierungsheadern bei Anfragen an googleapis.com . |
Zugehörige Berechtigungen
sendPixelFromBrowser
Sendet einen Befehl zum Laden der angegebenen URL als <img>
-Tag an den Browser. Dieses Befehlsprotokoll wird in den Web-Tags Google-Tag für GA4 und Google Analytics: GA-Ereignis unterstützt. Sie müssen die Servercontainer-URL konfigurieren. Weitere Informationen finden Sie in der Anleitung.
Diese API gibt false
zurück, wenn die eingehende Anfrage das Befehlsprotokoll nicht unterstützt oder wenn die Antwort bereits geleert wurde. Andernfalls gibt diese API true
zurück.
Example:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
Syntax
sendPixelFromBrowser(url)
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
url |
String | Die URL, die an den Browser gesendet werden soll. |
Zugehörige Berechtigungen
setCookie
Legt ein Cookie mit den angegebenen Optionen fest oder löscht es.
Wenn Sie ein Cookie löschen möchten, müssen Sie ein Cookie mit demselben Pfad und derselben Domain setzen, mit denen das Cookie erstellt wurde, und ihm einen Ablaufdatum-Wert zuweisen, der in der Vergangenheit liegt, z.B. "Thu, 01 Jan 1970 00:00:00 GMT"
.
Beachten Sie, dass returnResponse aufgerufen werden muss, damit die Antwort an den Client zurückgesendet wird.
Beispiel
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
Syntax
setCookie(name, value[, options[, noEncode]]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
name |
String | Der Name des Cookies. Beim Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden. |
value |
String | Der Cookiewert. |
options |
Gegenstand | Optionale Cookieattribute:domain, expires, fallbackDomain, httpOnly, max- age, path, secure und sameSite. Weitere Informationen finden Sie unten im Abschnitt Optionen. |
noEncode |
boolean |
Bei „true“ wird der Cookiewert nicht codiert. Die Standardeinstellung ist false .
|
domain:Der Host, an den das Cookie gesendet wird. Wenn der spezielle Wert „auto“ festgelegt ist, wird der Host automatisch nach der folgenden Strategie berechnet:
- eTLD+1 des
Forwarded
-Headers, falls vorhanden. - eTLD+1 des
X-Forwarded-Host
-Headers, falls vorhanden. - eTLD+1 des
Host
-Headers.
- eTLD+1 des
expires: Die maximale Lebensdauer des Cookies. Er muss ein UTC-formatierter Datumsstring sein, z.B. "Sat, 26 Oct 1985 08:21:00 GMT". Wenn sowohl
expires
als auchmax-age
festgelegt sind, hatmax-age
Vorrang.httpOnly Verhindert, dass JavaScript auf das Cookie zugreift, wenn
true
.max-age: Anzahl der Sekunden, bis das Cookie abläuft. Bei einer Null oder einer negativen Zahl läuft das Cookie sofort ab. Wenn sowohl
expires
als auchmax-age
festgelegt sind, hatmax-age
Vorrang.path: Ein Pfad, der in der angeforderten URL vorhanden sein muss. Andernfalls wird der Cookie-Header nicht vom Browser gesendet.
secure: Wenn dieser Wert auf
true
gesetzt ist, wird das Cookie nur an den Server gesendet, wenn eine Anfrage von einemhttps:
-Endpunkt gesendet wird.sameSite: Bestimmt, dass ein Cookie nicht mit ursprungsübergreifenden Anfragen gesendet werden darf. Muss
'strict'
,'lax'
oder'none'
sein.
Zugehörige Berechtigungen
setPixelResponse
Legt den Antworttext auf ein 1x1-GIF fest, setzt den Content-Type-Header auf 'image/gif', legt Caching-Header so fest, dass User-Agents die Antwort nicht im Cache speichern, und setzt den Antwortstatus auf 200.
Beachten Sie, dass returnResponse aufgerufen werden muss, damit die Antwort an den Client zurückgesendet wird.
Syntax
setPixelResponse();
Zugehörige Berechtigungen
Erfordert die Berechtigung access_response
. Die Berechtigung muss so konfiguriert sein, dass sie Zugriff auf mindestens Folgendes zulässt:
headers
– Die folgenden Schlüssel müssen zugelassen werdencontent-type
cache-control
expires
pragma
body
status
setResponseBody
Legt den Antworttext für das Argument fest.
Beachten Sie, dass returnResponse aufgerufen werden muss, damit die Antwort an den Client zurückgesendet wird.
Syntax
setResponseBody(body[, encoding]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
body |
String | Der Wert, der als Antworttext festgelegt werden soll. |
encoding |
String |
Die Zeichencodierung des Antworttexts (standardmäßig 'utf8' ). Unterstützte Werte sind 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' und 'hex' .
|
Zugehörige Berechtigungen
Erfordert die Berechtigung access_response
. Die Berechtigung muss so konfiguriert sein, dass sie Zugriff auf mindestens Folgendes zulässt:
body
setResponseHeader
Legt einen Header in der Antwort fest, die zurückgegeben wird. Wenn ein Header mit diesem Namen (Groß-/Kleinschreibung nicht berücksichtigend) zuvor von dieser API festgelegt wurde, wird durch den letzten Aufruf der vom vorherigen Aufrufer festgelegte Wert überschrieben oder gelöscht.
Beachten Sie, dass returnResponse aufgerufen werden muss, damit die Antwort an den Client zurückgesendet wird.
Syntax
setResponseHeader(name, value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
name |
String | Der Name der Kopfzeile. Bei HTTP-Headernamen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Daher wird der Headername in Kleinbuchstaben geschrieben. |
value |
string nicht definiert | Der Headerwert. Wenn null oder nicht definiert ist, wird der benannte Header aus der zurückgegebenen Antwort gelöscht. |
Zugehörige Berechtigungen
Erfordert die Berechtigung access_response
. Die Berechtigung muss so konfiguriert sein, dass sie Zugriff auf mindestens Folgendes zulässt:
headers
setResponseStatus
Legt den HTTP-Statuscode der zurückgegebenen Antwort fest.
Beachten Sie, dass returnResponse aufgerufen werden muss, damit die Antwort an den Client zurückgesendet wird.
Syntax
setResponseStatus(statusCode);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
statusCode |
number | Der HTTP-Statuscode, der zurückgegeben werden soll. |
Zugehörige Berechtigungen
Erfordert die Berechtigung access_response
. Die Berechtigung muss so konfiguriert sein, dass sie Zugriff auf mindestens Folgendes zulässt:
status
sha256
Berechnet den SHA-256-Digest der Eingabe und ruft einen Callback mit dem base64-codierten Digest auf, sofern das options
-Objekt keine andere Ausgabecodierung angibt.
Die API-Signatur und das Verhalten stimmen mit der sha256
API für Webcontainer überein. Für benutzerdefinierte Vorlagen in Servercontainern sollte jedoch die sha256Sync
API für einfacheren Code verwendet werden.
Beispiel
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});
Syntax
sha256(input, onSuccess, options = undefined);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
input |
String | Der zu hashende String. |
onSuccess |
Funktion |
Wird mit dem resultierenden Digest aufgerufen und in base64 codiert, sofern das options -Objekt keine andere Ausgabecodierung angibt.
|
options |
Gegenstand |
Optionales Optionsobjekt, um die Ausgabecodierung anzugeben. Wenn angegeben, sollte das Objekt den Schlüssel outputEncoding mit einem der Werte base64 oder hex enthalten.
|
Zugehörige Berechtigungen
Keine.
sha256Sync
Berechnet und gibt den SHA-256-Digest der Eingabe mit base64-Codierung zurück, sofern das options
-Objekt keine andere Ausgabecodierung angibt.
Beispiel
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
Syntax
sha256Sync(input, options = undefined);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
input |
String | Der zu hashende String. |
options |
Gegenstand |
Optionales Optionsobjekt, um die Ausgabecodierung anzugeben. Wenn angegeben, sollte das Objekt den Schlüssel outputEncoding mit einem der Werte base64 oder hex enthalten.
|
Zugehörige Berechtigungen
Keine.
templateDataStorage
Gibt ein Objekt mit Methoden für den Zugriff auf den Vorlagendatenspeicher zurück. Durch die Speicherung von Vorlagendaten können Daten für die Ausführungen einer einzelnen Vorlage freigegeben werden. Im Vorlagendatenspeicher gespeicherte Daten bleiben auf dem Server erhalten, auf dem der Container ausgeführt wird. In den meisten Fällen wird der Container von mehreren Servern ausgeführt. Das Speichern von Daten im Vorlagendatenspeicher garantiert also nicht, dass jede nachfolgende Anfrage Zugriff auf die Daten hat.
Das „Daten“ im Namen „templateDataStorage“ bezieht sich darauf, dass mit dieser API nur einfache, nicht funktionsbezogene Datentypen gespeichert werden können. Alle Funktionen oder Verweise auf Funktionen, die an die API übergeben wurden, werden stattdessen als null
gespeichert.
Syntax
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
Beispiel
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
Zugehörige Berechtigungen
testRegex
Testet einen String mit einem regulären Ausdruck, der über die createRegex
API erstellt wurde. Gibt true
zurück, wenn der reguläre Ausdruck übereinstimmt. Andernfalls wird false
zurückgegeben.
Ein regulärer Ausdruck, der mit dem globalen Flag erstellt wurde, ist zustandsorientiert. Weitere Informationen finden Sie in der RegExp.
Beispiel
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
Syntax
testRegex(regex, string);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
regex |
Objekt | Der zu testende reguläre Ausdruck, der von der createRegex API zurückgegeben wird. |
string |
String | Zu testender String. |
Zugehörige Berechtigungen
Keine.
toBase64
Codiert einen String als base64 oder base64url. Die Standardeinstellung ist die base64-Codierung.
Syntax
toBase64(input, options);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
input |
String | Zu codierender String. |
options
|
Gegenstand | Optionale API-Konfiguration. Weitere Informationen finden Sie unter Optionen unten. |
Optionen
Wahltaste | Typ | Beschreibung | Mindestversion |
---|---|---|---|
urlEncoding
|
boolean | Bei Einstellung auf „true“ wird das Ergebnis im Format base64url codiert. |
1.0.0 |
Beispiel
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
Zugehörige Berechtigungen
Keine.
BigQuery
Gibt ein Objekt zurück, das BigQuery-Funktionen bereitstellt.
Mit der Funktion BigQuery.insert
können Daten in eine BigQuery-Tabelle geschrieben werden. Es wird ein Promise zurückgegeben, das nach einer erfolgreichen Einfügung aufgelöst oder nach einem Fehler abgelehnt wird.
Wenn das Einfügen erfolgreich ist, wird das Versprechen ohne Argumente aufgelöst.
Wenn das Einfügen fehlschlägt, wird das Promise mit einer Liste von Objekten abgelehnt, die den Fehlergrund und im Falle eines Fehlers möglicherweise ein Zeilenobjekt enthalten. Es ist möglich, dass ein Teil der Anfrage erfolgreich abgeschlossen wird, andere nicht. Das Promise wird in diesem Fall mit einer Liste von Fehlern für jede Zeile mit einem Zeilenobjekt abgelehnt, um besser unterscheiden zu können, welche Zeilen eingefügt wurden (siehe Fehlerbeispiele unten). Weitere Informationen finden Sie in der BigQuery-Dokumentation unter Fehlermeldungen.
Syntax
BigQuery.insert(connectionInfo, rows[, options]);
Parameter | Typ | Beschreibung |
---|---|---|
connectionInfo |
Gegenstand |
Definiert Informationen, die zum Herstellen einer Verbindung zu einer BigQuery-Tabelle erforderlich sind. Es gibt einen optionalen Parameter und zwei erforderliche Parameter:
|
rows |
Array | Die Zeilen, die in die Tabelle eingefügt werden sollen. |
options |
Gegenstand | Optionale Anfrageoptionen. Die unterstützten Optionen sind: ignoreUnknownValues und skipUngültigeRows. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unten im Abschnitt Optionen. |
Parameter | Typ | Beschreibung |
---|---|---|
ignoreUnknownValues |
boolean | Wenn true festgelegt ist, werden Zeilen akzeptiert, die Werte enthalten, die nicht mit dem Schema übereinstimmen. Die unbekannten Werte werden ignoriert. Die Standardeinstellung ist false . |
skipInvalidRows |
boolean | Wenn true festgelegt ist, werden alle gültigen Zeilen einer Anfrage eingefügt, auch wenn ungültige Zeilen vorhanden sind. Die Standardeinstellung ist false . |
Der Fehler „Modul nicht gefunden“ bedeutet, dass in Ihrem Servercontainer wahrscheinlich eine ältere Version unseres Images ausgeführt wird, in der das BigQuery-Modul noch nicht enthalten war. Stellen Sie den Servercontainer mit denselben Einstellungen mithilfe unseres Bereitstellungsskripts noch einmal bereit. Das Modul wird automatisch eingefügt, sobald der Vorgang abgeschlossen ist.
Ein Fehler ohne Einfügen weist in der Regel ein Fehlerobjekt mit einem reason
-Schlüssel auf:
[{reason: 'invalid'}]
Ein Einfügungsfehler kann mehrere Fehlerobjekte mit einem errors
-Array und einem row
-Objekt enthalten. Das folgende Beispiel zeigt eine Fehlerantwort beim Einfügen von zwei Zeilen, bei denen nur eine Zeile einen Fehler enthält:
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
Beispiel
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
Zugehörige Berechtigungen
Firestore
Gibt ein Objekt zurück, das Firestore-Funktionen bereitstellt.
Diese API unterstützt nur Firestore im nativen Modus, nicht Firestore im Datastore-Modus. Außerdem unterstützt die API nur die Verwendung der Standarddatenbank.
Firestore.read
Die Funktion Firestore.read
liest Daten aus einem Firestore-Dokument und gibt eine Zusage zurück, die in ein Objekt mit zwei Schlüsseln aufgelöst wird: id
und data
. Wenn das Dokument nicht vorhanden ist, wird das Promise mit einem Objekt abgelehnt, das einen reason
-Schlüssel gleich not_found
enthält.
Syntax
Firestore.read(path[, options]);
Parameter | Typ | Beschreibung |
---|---|---|
path |
String | Der Pfad zum Dokument oder zur Sammlung. Darf nicht mit einem Schrägstrich („/“) beginnen oder enden. |
options |
Gegenstand | Optionale Anfrageoptionen. Die unterstützten Optionen sind: projectId, disableCache und transaction. Unbekannte Optionsschlüssel werden ignoriert. Weitere Informationen finden Sie unten im Abschnitt Optionen. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn keine Angabe gemacht wird, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, solange die Berechtigungseinstellung access_firestore für die Projekt-ID auf * oder GOOGLE_CLOUD_PROJECT festgelegt ist. Wenn der Servercontainer in Google Cloud ausgeführt wird, ist GOOGLE_CLOUD_PROJECT bereits auf die ID des Google Cloud-Projekts festgelegt. |
disableCache |
boolean | Optional: Bestimmt, ob der Cache deaktiviert wird. Caching ist standardmäßig aktiviert. Die Ergebnisse werden dabei für die Dauer der Anfrage im Cache gespeichert. |
transaction |
String | Optional: Der von Firestore.runTransaction() abgerufene Wert. Kennzeichnet den Vorgang, der in einer Transaktion verwendet werden soll. |
Beispiel
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
Die Funktion Firestore.write
schreibt Daten in ein Firestore-Dokument oder eine Firestore-Sammlung. Wenn der Pfad auf eine Sammlung verweist, wird ein Dokument mit einer zufällig generierten ID erstellt. Wenn der Pfad zu einem Dokument führt und dieses nicht vorhanden ist, wird es erstellt. Diese API gibt ein Promise zurück, das in die ID des hinzugefügten oder geänderten Dokuments aufgelöst wird. Wenn die Transaktionsoption verwendet wird, gibt die API zwar ein Promise zurück, enthält aber keine ID, da die Schreibvorgänge in Batches zusammengefasst werden.
Syntax
Firestore.write(path, input[, options]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
path |
String | Der Pfad zum Dokument oder zur Sammlung. Darf nicht mit einem Schrägstrich („/“) beginnen oder enden. |
input |
Gegenstand | Wert, der in das Dokument geschrieben werden soll. Wenn die Option zum Zusammenführen festgelegt ist, führt die API die Schlüssel aus der Eingabe im Dokument zusammen. |
options |
Gegenstand | Optionale Anfrageoptionen. Die unterstützten Optionen sind: projectId, merge und transaction. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unten im Abschnitt Optionen. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn keine Angabe gemacht wird, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, solange die Berechtigungseinstellung access_firestore für die Projekt-ID auf * oder GOOGLE_CLOUD_PROJECT festgelegt ist. Wenn der Servercontainer in Google Cloud ausgeführt wird, ist GOOGLE_CLOUD_PROJECT bereits auf die ID des Google Cloud-Projekts festgelegt. |
merge |
boolean | Optional: Wenn true festgelegt ist, werden die Schlüssel aus der Eingabe im Dokument zusammengeführt. Andernfalls wird mit der Methode das gesamte Dokument überschrieben. Die Standardeinstellung ist false . |
transaction |
String | Optional: Der von Firestore.runTransaction() abgerufene Wert. Kennzeichnet den Vorgang, der in einer Transaktion verwendet werden soll. |
Beispiel
const Firestore = require('Firestore');
const input = {key1: 'value1', key2: 12345};
Firestore.write('collection/document', input, {
projectId: 'gcp-cloud-project-id',
merge: true,
}).then((id) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Firestore.query
Die Funktion Firestore.query
fragt die angegebene Sammlung ab und gibt eine Versprechen zurück, die in ein Array von Firestore-Dokumenten aufgelöst wird, die den Abfragebedingungen entsprechen. Das Firestore-Dokumentobjekt ist mit dem oben unter Firestore.read
aufgeführten Objekt identisch. Wenn keine Dokumente vorhanden sind, die den Abfragebedingungen entsprechen, wird das zurückgegebene Promise in ein leeres Array aufgelöst.
Syntax
Firestore.query(collection, queryConditions[, options]);
Parameter | Typ | Beschreibung |
---|---|---|
collection |
String | Der Pfad zur Sammlung. Darf nicht mit einem Schrägstrich („/“) beginnen oder enden. |
queryConditions |
Array | Ein Array von Abfragebedingungen. Jede Abfrage hat die Form eines Arrays mit drei Werten: key, operator und expectedValue. E.g.:
[[‘id’, ‘<’, ‘5’], ['state’, ‘==’, ‘CA’]]. Die Bedingungen werden durch UND miteinander verknüpft, um das Abfrageergebnis zu erstellen. Eine Liste der kompatiblen Abfrageoperatoren finden Sie unter Abfrageoperatoren von Firestore. |
options |
Gegenstand | Optionale Anfrageoptionen. Die unterstützten Optionen sind: projectId, disableCache, limit und transaction. Unbekannte Optionsschlüssel werden ignoriert. Weitere Informationen finden Sie unten im Abschnitt Optionen. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn keine Angabe gemacht wird, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, solange die Berechtigungseinstellung access_firestore für die Projekt-ID auf * oder GOOGLE_CLOUD_PROJECT festgelegt ist. Wenn der Servercontainer in Google Cloud ausgeführt wird, ist GOOGLE_CLOUD_PROJECT bereits auf die ID des Google Cloud-Projekts festgelegt. |
disableCache |
boolean | Optional: Bestimmt, ob der Cache deaktiviert wird. Caching ist standardmäßig aktiviert. Die Ergebnisse werden dabei für die Dauer der Anfrage im Cache gespeichert. |
limit |
number | Optional: Ändert die maximale Anzahl der von der Abfrage zurückgegebenen Ergebnisse. Der Standardwert ist 5. |
transaction |
String | Optional: Der von Firestore.runTransaction() abgerufene Wert. Kennzeichnet den Vorgang, der in einer Transaktion verwendet werden soll. |
Beispiel
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
Die Funktion Firestore.runTransaction
ermöglicht dem Nutzer atomische Lese- und Schreibvorgänge in Firestore. Wenn es zu einem gleichzeitigen Schreib- oder einem anderen Transaktionskonflikt kommt, wird die Transaktion bis zu zwei Mal wiederholt. Schlägt die API nach insgesamt drei Versuchen fehl, wird sie mit einer Fehlermeldung abgelehnt. Diese API gibt ein Promise zurück, das bei jedem Schreibvorgang, wenn die Transaktion erfolgreich ist, in ein Array von Dokument-IDs aufgelöst wird. Wenn die Transaktion fehlschlägt, wird sie mit dem Fehler abgelehnt.
Syntax
Firestore.runTransaction(callback[, options]);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
callback |
Funktion | Ein Callback, der mit einer String-Transaktions-ID aufgerufen wird. Die Transaktions-ID kann an Lese-/Schreib-/Abfrageaufrufe in der API übergeben werden. Diese Callback-Funktion muss ein Promise zurückgeben. Der Callback kann bis zu dreimal ausgeführt werden, bevor er fehlschlägt. |
options |
Gegenstand | Optionale Anfrageoptionen. Die einzige unterstützte Option ist projectId. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unten im Abschnitt Optionen. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn keine Angabe gemacht wird, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, solange die Berechtigungseinstellung access_firestore für die Projekt-ID auf * oder GOOGLE_CLOUD_PROJECT festgelegt ist. Wenn der Servercontainer in Google Cloud ausgeführt wird, ist GOOGLE_CLOUD_PROJECT bereits auf die ID des Google Cloud-Projekts festgelegt. |
Beispiel
const Firestore = require('Firestore');
const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';
Firestore.runTransaction((transaction) => {
const transactionOptions = {
projectId: projectId,
transaction: transaction,
};
// Must return a promise.
return Firestore.read(path, transactionOptions).then((result) => {
const newInputCount = result.data.inputCount + 1;
const input = {key1: 'value1', inputCount: newInputCount};
return Firestore.write(path, input, transactionOptions);
});
}, {
projectId: projectId
}).then((ids) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Verfügbare Fehler in jeder Firestore-Funktion werden mit einem Objekt abgelehnt, das einen reason
-Schlüssel enthält:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
Die Fehlergründe können unter anderem Firestore REST API-Fehlercodes enthalten.
Zugehörige Berechtigungen
JSON
Gibt ein Objekt zurück, das JSON-Funktionen bereitstellt.
Die Funktion parse()
analysiert einen JSON-String, um den Wert oder das Objekt zu erstellen, das durch den String beschrieben wird. Wenn der Wert nicht geparst werden kann (z.B. ein fehlerhaftes JSON-Format), gibt die Funktion undefined
zurück. Wenn der Eingabewert kein String ist, wird die Eingabe in einen String umgewandelt.
Die Funktion stringify()
konvertiert die Eingabe in einen JSON-String. Wenn der Wert nicht geparst werden kann (z.B. weil das Objekt einen Zyklus hat), gibt die Methode undefined
zurück.
Beispiel
const JSON = require('JSON');
// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');
// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});
Syntax
JSON.parse(stringInput);
JSON.stringify(value);
Zugehörige Berechtigungen
Keine.
Math
Ein Objekt, das Math
-Funktionen bereitstellt.
Syntax
const Math = require('Math');
// Retrieve the absolute value.
const absolute = Math.abs(-3);
// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);
// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);
// Round the input to the nearest integer.
const rounded = Math.round(3.1);
// Return the largest argument.
const biggest = Math.max(1, 3);
// Return the smallest argument.
const smallest = Math.min(3, 5);
// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);
// Return the square root of the argument.
const unsquared = Math.sqrt(9);
Parameter
Parameter für mathematische Funktionen werden in Zahlen umgewandelt.
Zugehörige Berechtigungen
Keine.
Messages
Die folgenden APIs arbeiten zusammen, um die Weitergabe von Nachrichten zwischen verschiedenen Teilen eines Containers zu ermöglichen.
addMessageListener
Fügt eine Funktion hinzu, die auf eine Nachricht eines bestimmten Typs wartet. Wenn eine Nachricht dieses Typs mit der sendMessage
API gesendet wird (in der Regel über ein Tag), wird der Callback synchron ausgeführt. Der Callback wird mit zwei Parametern ausgeführt:
messageType:string
message:Object
Wenn der Callback in einem Client hinzugefügt wird, erhält er Nachrichten für alle Ereignisse, die vom Client erstellt werden. Wenn der Callback nur Nachrichten von einem bestimmten Ereignis empfangen soll, binden Sie diese API mithilfe von bindToEvent
in der onStart
-Funktion der runContainer
API an das Ereignis. Siehe Beispiel.
Syntax
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
messageType |
String | Der Nachrichtentyp, der überwacht werden soll. Wenn der Wert kein String ist, wird er in einen String umgewandelt. |
callback |
Funktion | Der Callback, der ausgeführt werden soll, wenn eine Nachricht des entsprechenden Nachrichtentyps gesendet wird. Wenn der Callback keine Funktion ist, unternimmt die API nichts. |
Beispiel
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
Zugehörige Berechtigungen
Erfordert die Berechtigung use_message
. Die Berechtigung muss so konfiguriert sein, dass sie mindestens Folgendes zulässt:
- Einen Nachrichtentyp mit
Usage
vonlisten
oderlisten_and_send
.
hasMessageListener
Gibt "true" zurück, wenn für den angegebenen Nachrichtentyp ein Nachrichten-Listener hinzugefügt wurde. Andernfalls wird „false“ zurückgegeben.
Syntax
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
Zugehörige Berechtigungen
Keine.
sendMessage
Sendet eine Nachricht des angegebenen Typs an einen registrierten Listener. Damit können Nachrichten von einem Tag an den Client zurückgesendet werden, der den Container ausgeführt hat.
Syntax
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
messageType |
String | Der zu sendende Nachrichtentyp. Wenn der Wert kein String ist, wird er in einen String umgewandelt. |
message |
Gegenstand | Die zu sendende Nachricht. Wenn die Nachricht kein Objekt ist, unternimmt die API nichts. |
Zugehörige Berechtigungen
Erfordert die Berechtigung use_message
. Die Berechtigung muss so konfiguriert sein, dass sie mindestens Folgendes zulässt:
- Einen Nachrichtentyp mit
Usage
vonlisten_and_send
odersend
.
Object
Gibt ein Objekt zurück, das Object
-Methoden bereitstellt.
Die Methode keys()
bietet das Verhalten der Standardbibliothek Object.keys(). Sie gibt ein Array der eigenen aufzählbaren Attributnamen eines bestimmten Objekts in derselben Reihenfolge zurück wie eine for...in...
-Schleife. Wenn der Eingabewert kein Objekt ist, wird er in ein Objekt umgewandelt.
Die Methode values()
bietet das Verhalten der Standardbibliothek Object.values(). Sie gibt ein Array der eigenen enumerierbaren Attributwerte eines bestimmten Objekts in derselben Reihenfolge zurück wie eine for...in...
-Schleife. Wenn der Eingabewert kein Objekt ist, wird er in ein Objekt umgewandelt.
Die Methode entries()
bietet das Verhalten der Standardbibliothek Object.entries(). Sie gibt ein Array der eigenen aufzählbaren Attribut-[key, value]
-Paare eines bestimmten Objekts in derselben Reihenfolge zurück wie eine for...in...
-Schleife. Wenn der Eingabewert kein Objekt ist, wird er zu einem Objekt gezwungen.
Die Methode freeze()
bietet das Verhalten der Standardbibliothek Object.freeze(). Ein fixiertes Objekt kann nicht mehr geändert werden. Durch das Einfrieren eines Objekts wird verhindert, dass ihm neue Eigenschaften hinzugefügt, vorhandene Eigenschaften entfernt und die Werte vorhandener Eigenschaften geändert werden. freeze()
gibt das übergebene Objekt zurück. Ein primitives Argument oder ein Null-Argument wird behandelt, als wäre es ein fixiertes Objekt und wird zurückgegeben.
Die Methode delete()
bietet das Verhalten des Löschoperators der Standardbibliothek. Sie entfernt den angegebenen Schlüssel aus dem Objekt, sofern das Objekt nicht fixiert ist.
Wie beim Löschoperator der Standardbibliothek wird true
zurückgegeben, wenn der erste Eingabewert (objectInput
) ein Objekt ist, das nicht fixiert ist, auch wenn der zweite Eingabewert (keyToDelete
) einen nicht vorhandenen Schlüssel angibt. In allen anderen Fällen wird false
zurückgegeben. Er unterscheidet sich jedoch in den folgenden Punkten vom Löschoperator für die Standardbibliothek:
keyToDelete
darf kein durch Punkte getrennter String sein, der einen verschachtelten Schlüssel angibt.delete()
kann nicht zum Entfernen von Elementen aus einem Array verwendet werden.- Mit
delete()
können keine Properties aus dem globalen Geltungsbereich entfernt werden.
Syntax
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
Parameter
Object.keys
Parameter | Typ | Beschreibung |
---|---|---|
objectInput | Beliebig | Objekt, dessen Schlüssel aufgelistet werden sollen Wenn die Eingabe kein Objekt ist, wird sie in ein Objekt umgewandelt. |
Object.values
Parameter | Typ | Beschreibung |
---|---|---|
objectInput | Beliebig | Objekt, dessen Werte aufgezählt werden sollen Wenn die Eingabe kein Objekt ist, wird sie in ein Objekt umgewandelt. |
Object.entries
Parameter | Typ | Beschreibung |
---|---|---|
objectInput | Beliebig | Objekt, dessen Schlüssel/Wert-Paare aufgelistet werden sollen Wenn die Eingabe kein Objekt ist, wird sie in ein Objekt umgewandelt. |
Object.freeze
Parameter | Typ | Beschreibung |
---|---|---|
objectInput | Beliebig | Das Objekt, das fixiert werden soll. Wenn die Eingabe kein Objekt ist, wird sie als fixiertes Objekt behandelt. |
Object.delete
Parameter | Typ | Beschreibung |
---|---|---|
objectInput | Beliebig | Objekt, dessen Schlüssel gelöscht werden soll |
keyToDelete | String | Der Schlüssel auf oberster Ebene, der gelöscht werden soll. |
Beispiel
const Object = require('Object');
// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});
// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});
// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});
// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});
// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.
Promise
Gibt ein Objekt zurück, das Methoden für die Interaktion mit Promise-Objekten bereitstellt.
Funktional gesehen entsprechen Promise-Objekte JavaScript-Promises. Jede Instanz hat drei Methoden, die ein Promise zurückgeben, das weitere Aktionen ermöglicht, wenn ein Promise erledigt wird:
.then()
verarbeitet sowohl die geklärten als auch die abgelehnten Anfragen. Es werden zwei Callbacks als Parameter verwendet: einer für den Erfolgsfall und einer für den Fehler..catch()
: Nur abgelehnte Anfragen werden bearbeitet. Übernimmt einen Callback als Parameter..finally()
: Bietet eine Möglichkeit, den Code auszuführen, unabhängig davon, ob das Promise aufgelöst oder abgelehnt wurde. Nimmt einen Callback als Parameter an, der ohne Argument aufgerufen wird.
Eine Variable, die ein Versprechen zurückgibt, entspricht dem aufgelösten Wert des Versprechens oder false
, wenn das Versprechen abgelehnt wird.
Beispiel
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
Gibt ein Promise zurück, das entweder
- wird aufgelöst, wenn alle Eingaben gelöst sind, oder
- wird abgelehnt, wenn eine der Eingaben abgelehnt wird
Syntax
Promise.all(inputs);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
inputs |
Array | Ein Array von Werten oder Versprechen. Wenn eine Eingabe kein Promise ist, wird die Eingabe so weitergegeben, als wäre sie der aufgelöste Wert eines Promise. Ein Fehler wird ausgegeben, wenn die Eingabe kein Array ist. |
Beispiel
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
Zugehörige Berechtigungen
Keine.
Promise.create
Erstellt ein Promise, das funktional einem JavaScript-Promise entspricht.
Syntax
Promise.create(resolver);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
resolver |
Funktion | Eine Funktion, die durch zwei Funktionen aufgerufen wird: Resolve und Ablehnen. Das zurückgegebene Promise wird aufgelöst oder abgelehnt, wenn der entsprechende Parameter aufgerufen wird. Gibt einen Fehler aus, wenn Resolver keine Funktion ist. |
Beispiel
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
Zugehörige Berechtigungen
Keine.
APIs testen
Diese APIs arbeiten mit JavaScript-Tests in einer Sandbox zusammen, um Tests für benutzerdefinierte Vorlagen in Google Tag Manager zu erstellen. Für diese Test-APIs ist keine require()
-Anweisung erforderlich. [Weitere Informationen zu Tests in benutzerdefinierten Vorlagen]
assertApi
Gibt ein Matcher-Objekt zurück, das verwendet werden kann, um Assertions für die angegebene API zu erstellen.
Syntax
assertApi(apiName)
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
apiName |
String | Der Name der zu prüfenden API; derselbe String, der an require() übergeben wurde.
|
Matcher
Subject.wasCalled()
Subject.wasNotCalled()
Subject.wasCalledWith(...expected)
Subject.wasNotCalledWith(...expected)
Beispiele
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
Die assertThat
API ist der [Truth]-Bibliothek von Google nachempfunden. Sie gibt ein Objekt zurück, mit dem fließend Assertions zum Wert eines Objekts gemacht werden können. Ein Assertion-Fehler bricht den Test sofort ab und markiert ihn als fehlgeschlagen. Ein Fehler in einem Test wirkt sich jedoch nicht auf andere Testfälle aus.
Syntax
assertThat(actual, opt_message)
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
actual |
Beliebig | Der Wert, der in den fluent-Prüfungen verwendet werden soll. |
opt_message |
String | Optionale Nachricht, die ausgegeben wird, wenn die Assertion fehlschlägt. |
Matcher
Matcher | Beschreibung |
---|---|
isUndefined() |
Bestätigt, dass der Betreff undefined ist. |
isDefined() |
Erklärt, dass der Betreff nicht undefined ist. |
isNull() |
Bestätigt, dass der Betreff null ist. |
isNotNull() |
Erklärt, dass der Betreff nicht null ist. |
isFalse() |
Bestätigt, dass der Betreff false ist. |
isTrue() |
Bestätigt, dass der Betreff true ist. |
isFalsy() |
Hiermit wird behauptet, dass das Motiv falsch ist. Falsche Werte sind undefined , null , false , NaN , 0 und ' (leerer String). |
isTruthy() |
Es wird behauptet, dass das Subjekt wahr ist. Falsche Werte sind undefined , null , false , NaN , 0 und ' (leerer String). |
isNaN() |
Bestätigt, dass das Subjekt der Wert NaN ist. |
isNotNaN() |
Bestätigt, dass das Subjekt ein beliebiger Wert außer NaN ist. |
isInfinity() |
Bestimmt, dass das Subjekt positiv oder negativ ist. |
isNotInfinity() |
Erklärt, dass das Subjekt ein beliebiger Wert außer einem positiven oder negativen Unendlichkeitswert ist. |
isEqualTo(expected) |
Bestätigt, dass das Subjekt mit dem angegebenen Wert übereinstimmt. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
isNotEqualTo(expected) |
Erklärt, dass das Subjekt nicht mit dem angegebenen Wert übereinstimmt. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
isAnyOf(...expected) |
Bestätigt, dass das Subjekt einem der angegebenen Werte entspricht. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
isNoneOf(...expected) |
Bestimmt, dass das Subjekt mit keinem der angegebenen Werte übereinstimmt. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
isStrictlyEqualTo(expected) |
Bestimmt, dass das Subjekt genau dem angegebenen Wert entspricht (=== ). |
isNotStrictlyEqualTo(expected) |
Bestimmt, dass das Subjekt nicht genau gleich (!== ) mit dem angegebenen Wert ist. |
isGreaterThan(expected) |
Bestätigt, dass das Objekt in einem geordneten Vergleich größer als (> ) des angegebenen Werts ist. |
isGreaterThanOrEqualTo(expected) |
Bestimmt in einem geordneten Vergleich, dass das Subjekt größer oder gleich (>= ) des angegebenen Werts ist. |
isLessThan(expected) |
Erklärt, dass das Objekt in einem geordneten Vergleich kleiner als (< ) des angegebenen Werts ist. |
isLessThanOrEqualTo(expected) |
Bestimmt in einem geordneten Vergleich, dass das Subjekt kleiner oder gleich (<= ) des angegebenen Werts ist. |
contains(...expected) |
Bestätigt, dass das Subjekt ein Array oder ein String ist, der alle angegebenen Werte in beliebiger Reihenfolge enthält. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
doesNotContain(...expected) |
Bestätigt, dass das Subjekt ein Array oder String ist, der keinen der angegebenen Werte enthält. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
containsExactly(...expected) |
Bestätigt, dass das Subjekt ein Array ist, das alle gegebenen Werte in beliebiger Reihenfolge und keine anderen Werte enthält. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
doesNotContainExactly(...expected) |
Bestätigt, dass das Subjekt ein Array ist, das in beliebiger Reihenfolge einen anderen Satz von Werten zu den gegebenen Werten enthält. Dies ist ein Wertvergleich, kein Referenzvergleich. Die Inhalte von Objekten und Arrays werden rekursiv verglichen. |
hasLength(expected) |
Bestätigt, dass das Subjekt ein Array oder ein String mit der angegebenen Länge ist. Die Assertion schlägt immer fehl, wenn der Wert kein Array oder String ist. |
isEmpty() |
Bestätigt, dass das Subjekt ein leeres Array oder ein leerer String ist (Länge = 0). Die Assertion schlägt immer fehl, wenn der Wert kein Array oder String ist. |
isNotEmpty() |
Bestätigt, dass das Subjekt ein Array oder ein String ist, der nicht leer ist (Länge > 0). Die Assertion schlägt immer fehl, wenn der Wert kein Array oder String ist. |
isArray() |
Bestätigt, dass der Typ des Subjekts ein Array ist. |
isBoolean() |
Bestätigt, dass der Typ des Subjekts ein boolescher Wert ist. |
isFunction() |
Bestätigt, dass der Typ des Subjekts eine Funktion ist. |
isNumber() |
Erklärt, dass der Typ des Subjekts eine Zahl ist. |
isObject() |
Bestätigt, dass der Typ des Subjekts ein Objekt ist. |
isString() |
Bestätigt, dass der Typ des Subjekts ein String ist. |
Beispiele
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
Der aktuelle Test schlägt sofort sofort fehl und die angegebene Nachricht wird ausgegeben, sofern angegeben.
Syntax
fail(opt_message);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
opt_message |
String | Optionaler Fehlermeldungstext. |
Beispiel
fail('This test has failed.');
mock
Mit der mock
API können Sie das Verhalten von in einer Sandbox ausgeführten APIs überschreiben. Die Mock API kann im Vorlagencode sicher verwendet werden, ist aber im Testmodus nicht betriebsbereit. Die Simulationen werden vor jedem Test zurückgesetzt.
Syntax
mock(apiName, returnValue);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
apiName |
String | Der Name der zu testenden API; derselbe String, der an require() übergeben wurde |
returnValue |
Beliebig | Der Wert, der für die API zurückgegeben werden soll, oder eine Funktion, die anstelle der API aufgerufen wird. Wenn returnValue eine Funktion ist, wird diese Funktion anstelle der Sandboxed API aufgerufen. Wenn returnValue etwas anderes als eine Funktion ist, wird dieser Wert anstelle der Sandbox API zurückgegeben. |
Beispiele
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
runCode
Führt den Code für die Vorlage, also den Inhalt des Tabs Code, in der aktuellen Testumgebung mit einem bestimmten Eingabedatenobjekt aus.
Syntax
runCode(data)
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
data |
Gegenstand | Datenobjekt, das im Test verwendet werden soll. |
Rückgabewert
Gibt den Wert einer Variablen für Variablenvorlagen zurück; für alle anderen Vorlagentypen wird undefined
zurückgegeben.
Beispiel
runCode({field1: 123, field2: 'value'});