In diesem Dokument werden die APIs für serverseitiges Tagging beschrieben.
addEventCallback
Registriert eine Callback-Funktion, die am Ende eines Ereignisses aufgerufen wird. Der Callback wird aufgerufen, wenn alle Tags für das Ereignis ausgeführt wurden. An den 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 mit der Funktion bindToEvent
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 Funktion, die am Ende des Ereignisses aufgerufen werden soll. |
Das eventData
-Objekt enthält die folgenden Daten:
Schlüsselname | Typ | Beschreibung |
---|---|---|
tags |
Array |
Ein Array mit Tag-Datenobjekten. Jedes Tag, das während des Ereignisses ausgelöst wird, hat einen Eintrag in diesem Array. Das Tag-Datenobjekt enthält die ID des Tags (id ), den Ausführungsstatus (status ) und die Ausführungszeit (executionTime ). Die Tag-Daten enthalten auch zusätzliche Tag-Metadaten, die für das 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.
});
Verknüpfte Berechtigungen
callLater
Plant einen Aufruf einer Funktion, der asynchron ausgeführt werden soll. Die Funktion wird aufgerufen, nachdem der aktuelle Code zurückgegeben wurde. Das 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. |
Verknüpfte 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 mehr 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. wenn der Aufruf in einem asynchronen Callback wie in callLater
oder der Funktion runContainer
onComplete
erfolgt).
Ein Client sollte die Anfrage über diese API beanspruchen, bevor die runContainer
API aufgerufen wird.
Beispiel
const claimRequest = require('claimRequest');
claimRequest();
Syntax
claimRequest();
Verknüpfte Berechtigungen
Keine.
computeEffectiveTldPlusOne
Gibt die effektive Top-Level-Domain + 1 (eTLD+1) der angegebenen Domain oder URL zurück. Die eTLD+1 wird berechnet, indem die Domain anhand der Regeln der öffentlichen Suffixliste ausgewertet wird. Die eTLD+1 ist in der Regel die Top-Level-Domain, 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, unter der die eTLD+1 berechnet wird. |
Verknüpfte Berechtigungen
Keine.
createRegex
Erstellt eine neue Regex-Instanz und gibt sie in ein 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 ist oder Re2 auf dem Server nicht verfügbar ist.
Diese API verwendet eine Re2-Implementierung. Das Server-Docker-Image muss 2.0.0 oder höher sein.
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 mit den Flags für den zu erstellenden Regex. „g“ (global) und „i“ (Groß- und Kleinschreibung ignorieren) werden unterstützt. Alle anderen Zeichen werden ohne Ton ignoriert. |
Verknüpfte Berechtigungen
Keine.
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 bereitgestellt wird.
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 durch encodeUri() oder auf andere Weise codiert wurde.
|
Verknüpfte 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 die Eingabe ungültig ist.
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 mit encodeUriComponent() oder auf andere Weise codiert wurde.
|
Verknüpfte Berechtigungen
Keine.
encodeUri
Gibt einen codierten Uniform Resource Identifier (URI) zurück, indem Sonderzeichen maskiert werden. Gibt einen String zurück, der den angegebenen String darstellt, der als URI codiert ist.
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 | Ein vollständiger URI. |
Verknüpfte Berechtigungen
Keine.
encodeUriComponent
Gibt einen codierten Uniform Resource Identifier (URI) zurück, indem Sonderzeichen maskiert werden. Gibt einen String zurück, der den angegebenen String darstellt, der als URI codiert ist.
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. |
Verknüpfte Berechtigungen
Keine.
extractEventsFromMpv1
Übersetzt eine eingehende Measurement Protocol V1-Anfrage in eine Liste von Ereignissen im Unified Schema-Format. 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();
Verknüpfte Berechtigungen
Berechtigung read_request
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens den folgenden Zugriff ermöglicht:
body
query parameters
extractEventsFromMpv2
Übersetzt eine eingehende Measurement Protocol V2-Anfrage in eine Liste von Ereignissen im Unified Schema-Format. 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();
Verknüpfte Berechtigungen
Berechtigung read_request
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens den folgenden Zugriff ermöglicht:
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') {
// ...
}
Verknüpfte 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). |
Verknüpfte Berechtigungen
Keine.
getAllEventData
Gibt eine Kopie der Ereignisdaten zurück
Syntax
getAllEventData();
Verknüpfte Berechtigungen
getClientName
Gibt einen String zurück, der den Namen des aktuellen Clients enthält.
Syntax
getClientName();
Verknüpfte Berechtigungen
getContainerVersion
Gibt ein Objekt zurück, das Daten zum aktuellen Container enthält. 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();
Verknüpfte Berechtigungen
getCookieValues
Gibt ein Array mit den Werten aller Cookies mit dem angegebenen Namen zurück.
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 |
Boolesch |
Bei true werden die Cookiewerte vor der Rückgabe nicht decodiert. Die Standardeinstellung ist false .
|
Verknüpfte Berechtigungen
getEventData
Gibt eine Kopie des Werts unter dem angegebenen Pfad in den Ereignisdaten zurück Gibt undefined
zurück, wenn keine Ereignisdaten vorhanden oder unter dem angegebenen Pfad kein Wert 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);
Verknüpfte Berechtigungen
getGoogleScript
Ruft eine Ressource aus einem vordefinierten Satz von Google-Skripts ab und gibt ein Versprechen mit dem Skript und den zugehörigen Caching-Metadaten zurück.
Das Versprechen wird in ein Objekt aufgelöst, das zwei Schlüssel enthält: script
und metadata
. Wenn die Anfrage fehlschlägt, wird das Versprechen mit einem reason
-Schlüssel abgelehnt.
Das metadata
-Objekt enthält die folgenden Caching-Metadaten basierend auf den Ressourcenantwort-Headern. 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 (gtag.js) aus 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 |
Objekt | Optionale Anfrageoptionen. Die unterstützten Optionen finden Sie unten. |
Optionen
Option | 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 | Ist dies der Fall, wird die Debug-Version des Analyseskripts angefordert und zurückgegeben. |
timeout |
number |
Das Zeitlimit der Anfrage in Millisekunden. Nicht positive Werte werden ignoriert. Wenn das Zeitlimit für die Anfrage überschritten wird, wird der Callback mit undefined für den Skriptwert und {} für das Metadatenobjekt aufgerufen.
|
Unbekannte Optionsschlüssel werden ignoriert.
Verknüpfte Berechtigungen
Berechtigung send_http
erforderlich. Die Berechtigung muss so konfiguriert werden, dass sie mindestens den folgenden Zugriff gewährt:
- 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. Dazu werden Anfrageheader wie "Forwarded" und "X-Forwarded-For" gelesen.
Hinweis: Diese API versucht, die Ursprungs-IP zu ermitteln, kann aber nicht garantieren, dass das Ergebnis korrekt ist.
Syntax
getRemoteAddress();
Verknüpfte Berechtigungen
Berechtigung read_request
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens den folgenden Zugriff ermöglicht:
- Header
Forwarded
undX-Forwarded-For
- Remote-IP-Adresse
getRequestBody
Gibt den Anfragetext als String zurück, falls vorhanden, oder undefined
.
Syntax
getRequestBody();
Verknüpfte Berechtigungen
getRequestHeader
Gibt den Wert des benannten Anfrageheaders als string zurück, falls vorhanden, oder 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 des Headers. Bei diesem Wert wird die Groß- und Kleinschreibung nicht berücksichtigt. |
Verknüpfte 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();
Verknüpfte Berechtigungen
Keine.
getRequestPath
Gibt den Anfragepfad ohne den Abfragestring zurück. Wenn die URL beispielsweise '/foo?id=123'
lautet, wird '/foo'
zurückgegeben. Entfernt automatisch das URL-Präfix des Servercontainers 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();
Verknüpfte Berechtigungen
getRequestQueryParameter
Gibt den decodierten Wert des benannten Abfragestringparameters als String oder undefined
zurück, wenn der Parameter nicht vorhanden ist. Wenn der Parameter im Abfragestring wiederholt wird, wird der erste Wert im Abfragestring zurückgegeben.
Beispiel
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
Syntax
getRequestQueryParameter(name);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
name |
String | Name des Suchparameters. |
Verknüpfte Berechtigungen
getRequestQueryParameters
Gibt die Abfrageparameter der eingehenden HTTP-Anfrage als Objekt zurück, das die Namen der Suchparameter dem entsprechenden Wert oder 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();
Verknüpfte Berechtigungen
getRequestQueryString
Gibt die Anfrageabfrage als String ohne das führende Fragezeichen oder einen 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();
Verknüpfte Berechtigungen
getTimestamp
Veraltet. getTimestampMillis bevorzugen.
Gibt eine Zahl zurück, die die aktuelle Zeit in Millisekunden seit der Unix-Epoche darstellt, wie von Date.now()
zurückgegeben.
Syntax
getTimestamp();
Verknüpfte Berechtigungen
Keine.
getTimestampMillis
Gibt eine Zahl zurück, die die aktuelle Zeit in Millisekunden seit der Unix-Epoche darstellt, wie von Date.now()
zurückgegeben.
Syntax
getTimestampMillis();
Verknüpfte Berechtigungen
Keine.
getType
Gibt einen String zurück, der den Typ des angegebenen Werts beschreibt.
Eingabetyp | Rückgabewert |
---|---|
String | 'string' |
number | 'number' |
Boolesch | '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. |
Verknüpfte Berechtigungen
Keine.
isRequestMpv1
Gibt true
zurück, wenn die eingehende Anfrage eine Measurement Protocol V1-Anfrage ist, oder false
.
Beispiel
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
Syntax
isRequestMpv1();
Verknüpfte Berechtigungen
Keine.
isRequestMpv2
Gibt true
zurück, wenn die eingehende Anfrage eine Measurement Protocol V2-Anfrage ist, oder false
.
Beispiel
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
Syntax
isRequestMpv2();
Verknüpfte Berechtigungen
Keine.
logToConsole
Protokolliert die Argumente in der Konsole.
Diese Logs sind im Log-Explorer in der Google Cloud Console sichtbar.
Führen Sie im Log-Explorer die Abfrage logName =~ "stdout"
aus, um die von dieser API erstellten Logeinträge aufzurufen.
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 übernimmt ein oder mehrere Argumente, die bei Bedarf in einen String konvertiert und in der Console protokolliert werden.
Verknüpfte Berechtigungen
makeInteger
Wandelt den angegebenen Wert in eine Zahl (Ganzzahl) um.
Syntax
makeInteger(value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
value |
Beliebiger Typ | Der Wert, der konvertiert werden soll. |
Verknüpfte Berechtigungen
Keine.
makeNumber
Wandelt den angegebenen Wert in eine Zahl um.
Syntax
makeNumber(value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
value |
Beliebiger Typ | Der Wert, der konvertiert werden soll. |
Verknüpfte Berechtigungen
Keine.
makeString
Gibt den angegebenen Wert als String zurück
Syntax
makeString(value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
value |
Beliebiger Typ | Der Wert, der konvertiert werden soll. |
Verknüpfte Berechtigungen
Keine.
makeTableMap
Wandelt ein einfaches Tabellenobjekt mit zwei Spalten in ein Map
um. Dadurch wird ein SIMPLE_TABLE
-Vorlagenfeld mit zwei Spalten in ein übersichtlicheres Format geändert.
Diese Funktion kann beispielsweise ein Tabellenobjekt konvertieren:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
in eine Karte ein:
{
'k1': 'v1',
'k2': 'v2'
}
Gibt ein Objekt zurück: Die konvertierten Map
aus Schlüssel/Wert-Paaren wurden diesem oder null
hinzugefügt.
Syntax
makeTableMap(tableObj, keyColumnName, valueColumnName);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
tableObj |
Auflisten |
Das zu konvertierende Tabellenobjekt. Dies ist eine Liste mit Karten, von denen jeder Map eine Zeile in der Tabelle darstellt. Jeder Attributname in einem Zeilenobjekt ist der Spaltenname und der Attributwert ist der Spaltenwert in der Zeile.
|
keyColumnName |
String |
Name der Spalte, deren Werte in den konvertierten Map in Schlüssel umgewandelt werden.
|
valueColumnName |
String |
Name der Spalte, deren Werte in den konvertierten Map -Wert umgewandelt werden.
|
Verknüpfte Berechtigungen
Keine.
parseUrl
Gibt ein Objekt zurück, das alle Komponenten der jeweiligen URL enthält, ähnlich wie das Objekt URL
.
Diese API gibt für jede fehlerhafte URL undefined
zurück. Bei richtig formatierten URLs haben Felder, die nicht im URL-String vorhanden sind, den Wert eines leeren Strings oder im Fall von searchParams
ein leeres Objekt.
Das zurückgegebene Objekt hat 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. |
Verknüpfte Berechtigungen
Keine.
returnResponse
Löscht die Antwort, die zuvor von anderen Vorlagen mit den APIs festgelegt wurde, die die Antwort ändern, einschließlich setCookie, setPixelResponse, setResponseBody, setResponseHeader und setResponseStatus. Die Standardeinstellung ist 200 (HTTP-Statuscode), leerer Text und keine Header.
Es wird empfohlen, diese API von einer Clientvorlage aus zu verwenden.
Syntax
returnResponse();
Beispiel
Siehe das runContainer
Beispiel.
Verknüpfte 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
erhalten eine Funktion namens bindToEvent
. Verwenden Sie bindToEvent
, um eine API im Kontext des Ereignisses auszuführen.
Weitere Informationen finden Sie im Beispiel für „addEventCallback“.
Es wird empfohlen, diese API von einer Clientvorlage aus 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 |
Objekt | 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. |
Verknüpfte Berechtigungen
sendEventToGoogleAnalytics
Sendet ein einzelnes Ereignis mit allgemeinen Ereignisdaten an Google Analytics und gibt ein Versprechen zurück, das in ein Objekt mit einem location
-Schlüssel aufgelöst wird oder in ein Objekt mit einem reason
-Schlüssel abgelehnt wird. Das Ziel (Universal Analytics oder Google Analytics 4) basiert auf der Mess-ID in den Ereignisdaten.
Das Feld location
ist auf den Header location
gesetzt, falls vorhanden.
Beispiel
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();
}, (err) => {
setResponseStatus(500);
data.gtmOnFailure();
});
Syntax
sendEventToGoogleAnalytics(event);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
event |
Objekt | Das Ereignis im Unified-Schema-Format. |
Verknüpfte Berechtigungen
Berechtigung send_http
erforderlich. Die Berechtigung muss so konfiguriert werden, dass sie mindestens den folgenden Zugriff gewährt:
- Google Domains zulassen
sendHttpGet
Erstellt eine HTTP GET-Anfrage an die angegebene URL und gibt ein Versprechen zurück, das mit dem Ergebnis aufgelöst wird, wenn die Anfrage abgeschlossen ist oder das Zeitlimit überschritten wird.
Das aufgelöste Ergebnis ist ein Objekt mit drei Schlüsseln: statusCode
, headers
und body
. Wenn die Anfrage fehlgeschlagen ist (z.B. ungültige URL, keine Route zum Host, SSL-Verhandlungsfehler usw.), wird das Versprechen mit {reason:
'failed'}
abgelehnt. Wenn die Option timeout
festgelegt und das Zeitlimit für die Anfrage überschritten wurde, wird das Versprechen mit {reason: 'timed_out'}
abgelehnt.
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 Anfrage-URL. |
options |
Objekt | Optionale Anfrageoptionen. Unterstützte Optionen sind headers und timeout. Unbekannte Optionsschlüssel werden ignoriert. Weitere Informationen finden Sie unter Optionen unten. |
- headers: Zusätzliche Anfrageheader, die als Objekt dargestellt werden.
- timeout: das Zeitlimit in Millisekunden, bevor die Anfrage abgebrochen wird.
Die Standardeinstellung ist
15000
.
Verknüpfte Berechtigungen
sendHttpRequest
Sendet eine HTTP-Anfrage an die angegebene URL und gibt ein Versprechen zurück, das mit der Antwort aufgelöst wird, sobald die Anfrage abgeschlossen ist oder das Zeitlimit überschritten wird.
Das aufgelöste Ergebnis ist ein Objekt mit drei Schlüsseln: statusCode
, headers
und body
. Wenn die Anfrage fehlgeschlagen ist (z.B. ungültige URL, keine Route zum Host, SSL-Verhandlungsfehler usw.), wird das Versprechen mit {reason:
'failed'}
abgelehnt. Wenn die Option timeout
festgelegt und das Zeitlimit für die Anfrage überschritten wurde, wird das Versprechen mit {reason: 'timed_out'}
abgelehnt.
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 Anfrage-URL. |
options |
Objekt | Optionale Anfrageoptionen. Unterstützte Optionen sind: headers, method und timeout. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unter Optionen unten. |
body |
String | Optionaler Anfragetext. |
- headers: Zusätzliche Anfrageheader.
- method: Die Anfragemethode ist standardmäßig "GET".
- timeout: das Zeitlimit in Millisekunden, bevor die Anfrage abgebrochen wird.
Die Standardeinstellung ist
15000
.
Verknüpfte Berechtigungen
sendPixelFromBrowser
Sendet einen Befehl an den Browser, um die angegebene URL als <img>
-Tag zu laden. Dieses Befehlsprotokoll wird in den Web-Tags Google Analytics: GA4-Konfiguration und Google Analytics: GA-Ereignis unterstützt. Sie müssen die Option An Servercontainer senden im Konfigurations-Tag aktivieren. Weitere Informationen
Diese API gibt false
zurück, wenn die eingehende Anfrage das Befehlsprotokoll nicht unterstützt oder die Antwort bereits geleert wurde. Andernfalls wird von dieser API true
zurückgegeben.
Beispiel:
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 wird. |
Verknüpfte Berechtigungen
setCookie
Legt ein Cookie mit den angegebenen Optionen fest oder löscht es.
Um ein Cookie zu löschen, müssen Sie ein Cookie mit dem Pfad und der Domain erstellen, mit der das Cookie erstellt wurde. Weisen Sie ihm ein Ablaufdatum zu, das in der Vergangenheit liegt, z. B. "Thu, 01 Jan 1970 00:00:00 GMT"
.
Damit die Antwort an den Client zurückgegeben wird, muss returnResponse aufgerufen werden.
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 Cookie-Name. Beim Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden. |
value |
String | Der Cookiewert. |
options |
Objekt | Optionale Cookie-Attribute:domain, expires, fallbackDomain,httpOnly, max-age, path, secure und sameSite. Weitere Informationen finden Sie unter Optionen unten. |
noEncode |
Boolesch |
Bei Einstellung auf "true" wird der Cookiewert nicht codiert. Die Standardeinstellung ist false .
|
domain:Host, an den das Cookie gesendet wird Wenn der Wert „auto“ festgelegt ist, wird der Host automatisch mit der folgenden Strategie berechnet:
- eTLD+1 von
Forwarded
-Header, falls vorhanden. - eTLD+1 von
X-Forwarded-Host
-Header, falls vorhanden. - eTLD+1 von
Host
-Header.
- eTLD+1 von
expired: Die maximale Lebensdauer des Cookies. Dies muss ein UTC-formatierter Datumsstring sein, z. B. "Sa., 26. Okt. 1985 08:21:00 GMT". Wenn sowohl
expires
als auchmax-age
festgelegt sind, hatmax-age
Vorrang.httpOnly: Verhindert JavaScript beim Zugriff auf das Cookie, wenn
true
.max-age: Anzahl der Sekunden, bis das Cookie abläuft. Eine Null oder eine negative Zahl läuft im 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, oder der Browser sendet den Cookie-Header nicht.
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: Gibt an, dass ein Cookie nicht mit ursprungsübergreifenden Anfragen gesendet werden darf. Muss
'strict'
,'lax'
oder'none'
sein.
Verknüpfte Berechtigungen
setPixelResponse
Legt den Antworttext auf ein 1 x 1-GIF fest, den Inhaltstyp-Header auf „image/gif“. Der Caching-Header wird so festgelegt, dass User-Agents die Antwort nicht im Cache speichern und der Antwortstatus auf 200 gesetzt wird.
Damit die Antwort an den Client zurückgegeben wird, muss returnResponse aufgerufen werden.
Syntax
setPixelResponse();
Verknüpfte Berechtigungen
Berechtigung access_response
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens den folgenden Zugriff ermöglicht:
headers
– Die folgenden Schlüssel müssen zulässig seincontent-type
cache-control
expires
pragma
body
status
setResponseBody
Legt den Antworttext auf das Argument fest.
Damit die Antwort an den Client zurückgegeben wird, muss returnResponse aufgerufen werden.
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' .
|
Verknüpfte Berechtigungen
Berechtigung access_response
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens den folgenden Zugriff ermöglicht:
body
setResponseHeader
Legt einen Header in der Antwort fest, die zurückgegeben wird. Wenn in dieser API zuvor ein Header mit diesem Namen (Groß-/Kleinschreibung nicht berücksichtigend) festgelegt wurde, wird der Wert, der vom vorherigen Aufrufer festgelegt wurde, durch den zweiten Aufruf überschrieben oder gelöscht.
Damit die Antwort an den Client zurückgegeben wird, muss returnResponse aufgerufen werden.
Syntax
setResponseHeader(name, value);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
name |
String | Der Name des Headers. Bei HTTP-Headernamen spielt die Groß- und Kleinschreibung keine Rolle, sodass der Header kleingeschrieben wird. |
value |
string nicht definiert | Der Headerwert. Wenn null oder nicht definiert, wird der benannte Header aus der Antwort gelöscht, die zurückgegeben wird. |
Verknüpfte Berechtigungen
Berechtigung access_response
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens den folgenden Zugriff ermöglicht:
headers
setResponseStatus
Legt den HTTP-Statuscode der Antwort fest, die zurückgegeben wird.
Damit die Antwort an den Client zurückgegeben wird, muss returnResponse aufgerufen werden.
Syntax
setResponseStatus(statusCode);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
statusCode |
number | Der HTTP-Statuscode, der zurückgegeben werden soll. |
Verknüpfte Berechtigungen
Berechtigung access_response
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens den folgenden Zugriff ermöglicht:
status
sha256
Berechnet den SHA-256-Digest der Eingabe und ruft einen Callback mit dem in base64 codierten Digest auf, es sei denn, das options
-Objekt gibt eine andere Ausgabecodierung an.
Diese API-Signatur und -Verhaltensweise entsprechen der sha256
API für Webcontainer. Für benutzerdefinierte Vorlagen in Servercontainern sollte jedoch die sha256Sync
API verwendet werden, um einen einfacheren Code zu erhalten.
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 | String, der gehasht werden soll. |
onSuccess |
Funktion |
Wird mit dem resultierenden Digest aufgerufen, codiert in base64, es sei denn, das options -Objekt gibt eine andere Ausgabecodierung an.
|
options |
Objekt |
Optional, um die Ausgabecodierung anzugeben. Wenn angegeben, sollte das Objekt den Schlüssel outputEncoding mit dem Wert base64 oder hex enthalten.
|
Verknüpfte Berechtigungen
Keine.
sha256Sync
Berechnet und gibt den SHA-256-Digest der Eingabe zurück, der in base64 codiert ist, 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 | String, der gehasht werden soll. |
options |
Objekt |
Optional, um die Ausgabecodierung anzugeben. Wenn angegeben, sollte das Objekt den Schlüssel outputEncoding mit dem Wert base64 oder hex enthalten.
|
Verknüpfte Berechtigungen
Keine.
templateDataStorage
Gibt ein Objekt mit Methoden für den Zugriff auf die Vorlagendatenspeicherung zurück. Mit dem Datenspeicher für Vorlagen können Daten für die Ausführung einer einzigen Vorlage freigegeben werden. Im Vorlagendatenspeicher gespeicherte Daten sind auf dem Server gespeichert, auf dem der Container ausgeführt wird. In den meisten Fällen werden der Server von mehreren Servern ausgeführt. Deshalb wird durch das Speichern von Daten im Vorlagendatenspeicher nicht garantiert, dass jede nachfolgende Anfrage Zugriff auf die Daten hat.
Der Begriff „Daten“ im Namen „templateDataStorage“ bezieht sich darauf, dass mit dieser API nur einfache Datentypen gespeichert werden können, die keine Funktionen sind. Alle Funktionen oder Verweise auf Funktionen, die an die API übergeben werden, werden stattdessen als null
gespeichert.
templateDataStorage
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 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);
});
Verknüpfte Berechtigungen
testRegex
Testet einen String mit einem Regex, der über die createRegex
API erstellt wurde. Gibt true
zurück, wenn der reguläre Ausdruck übereinstimmt. Gibt ansonsten false
zurück.
Ein mit dem globalen Flag erstellter Regex ist zustandsorientiert. Weitere Informationen finden Sie in der Dokumentation zu 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 Regex, der von der createRegex API zurückgegeben wird. |
string |
String | Zu testender String. |
Verknüpfte Berechtigungen
Keine.
toBase64
Codiert einen String als base64.
Syntax
toBase64(input);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
input |
String | String, der codiert werden soll. |
Beispiel
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
Verknüpfte 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. Sie gibt ein Promise zurück, das nach einem erfolgreichen Einfügen aufgelöst oder bei einem Fehler abgelehnt wird.
Wenn das Einfügen erfolgreich ist, wird das Promise ohne Argumente aufgelöst.
Wenn das Einfügen fehlschlägt, wird das Versprechen mit einer Liste von Objekten abgelehnt, die den Fehlergrund und möglicherweise ein Zeilenobjekt enthalten. Es ist möglich, dass ein Teil der Anfrage erfolgreich abgeschlossen wird, andere jedoch nicht. In diesem Fall wird das Versprechen mit einer Liste von Fehlern für jede Zeile mit einem Zeilenobjekt abgelehnt, damit Sie leichter erkennen können, welche Zeilen eingefügt wurden (siehe Fehlerbeispiele unten). Weitere Informationen finden Sie in der BigQuery-Dokumentation zu Fehlermeldungen.
Syntax
BigQuery.insert(connectionInfo, rows[, options]);
Parameter | Typ | Beschreibung |
---|---|---|
connectionInfo |
Objekt |
Definiert die 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 |
Objekt | Optionale Anfrageoptionen. Unterstützte Optionen sind: ignoreUnknownValues und skipinvalidRows. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unter Optionen unten. |
Parameter | Typ | Beschreibung |
---|---|---|
ignoreUnknownValues |
Boolesch | Wenn true festgelegt ist, akzeptieren Sie Zeilen, die Werte enthalten, die nicht dem Schema entsprechen. Die unbekannten Werte werden ignoriert. Die Standardeinstellung ist false . |
skipInvalidRows |
Boolesch | Wenn true festgelegt ist, fügen Sie alle gültigen Zeilen einer Anfrage ein, auch wenn ungültige Zeilen vorhanden sind. Die Standardeinstellung ist false . |
Ein Fehler des Typs „Nicht gefunden“ bedeutet, dass auf dem Servercontainer wahrscheinlich eine ältere Version unseres Images ausgeführt wird, die das BigQuery-Modul noch nicht enthalten hat. Stellen Sie Ihren Servercontainer mit denselben Einstellungen noch einmal über unser Bereitstellungsskript bereit. Das Modul wird automatisch hinzugefügt, wenn der Vorgang abgeschlossen ist.
Ein Fehler, der nicht zum Einfügen führt, hat normalerweise ein Fehlerobjekt mit dem Schlüssel reason
:
[{reason: 'invalid'}]
Ein Fehler kann mehrere Fehlerobjekte mit einem errors
-Array und einem row
-Objekt enthalten. Das folgende Beispiel zeigt eine Fehlerantwort nach dem 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);
Verknüpfte 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.
Firestore.read
Die Funktion Firestore.read
liest Daten aus einem Firestore-Dokument und gibt ein Versprechen zurück, das in ein Objekt aufgelöst wird, das zwei Schlüssel enthält: id
und data
. Ist das Dokument nicht vorhanden, wird ein Promise mit einem reason
-Schlüssel abgelehnt, der not_found
entspricht.
Syntax
Firestore.read(path[, options]);
Parameter | Typ | Beschreibung |
---|---|---|
path |
String | Der Pfad zum Dokument oder zur Sammlung. Darf nicht mit einem „/“ beginnen oder enden. |
options |
Objekt | Optional. Unterstützte Optionen sind: projectId, disableCache und transaction. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unter Optionen unten. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn kein Wert angegeben ist, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, sofern 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, wird GOOGLE_CLOUD_PROJECT bereits auf die ID des Google Cloud-Projekts festgelegt. |
disableCache |
Boolesch | Optional: Bestimmt, ob der Cache deaktiviert werden soll. Caching ist standardmäßig aktiviert, wodurch die Ergebnisse für die Dauer der Anfrage im Cache gespeichert werden. |
transaction |
String | Optional: Der aus Firestore.runTransaction() abgerufene Wert. Kennzeichnet den Vorgang, der innerhalb 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 zu einer Sammlung gehört, wird ein Dokument mit einer zufällig generierten ID erstellt. Wenn der Pfad zu einem Dokument führt und er nicht vorhanden ist, wird er erstellt. Diese API gibt ein Versprechen 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 Versprechen zurück, enthält aber nicht die 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 „/“ beginnen oder enden. |
input |
Objekt | Der 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 |
Objekt | Optional. Unterstützte Optionen sind: projectId, merge und transaction. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unter Optionen unten. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn kein Wert angegeben ist, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, sofern 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, wird GOOGLE_CLOUD_PROJECT bereits auf die ID des Google Cloud-Projekts festgelegt. |
merge |
Boolesch | Optional: Wenn true festgelegt ist, führen Sie die Schlüssel aus der Eingabe in das Dokument zusammen. Andernfalls überschreibt die Methode das gesamte Dokument. Die Standardeinstellung ist false . |
transaction |
String | Optional: Der aus Firestore.runTransaction() abgerufene Wert. Kennzeichnet den Vorgang, der innerhalb 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 ein Versprechen zurück, das in ein Array von Firestore-Dokumenten aufgelöst wird, die den Abfragebedingungen entsprechen. Das Firestore-Dokumentobjekt ist dasselbe wie oben in Firestore.read
aufgeführt. Wenn keine Dokumente vorhanden sind, die den Abfragebedingungen entsprechen, wird das zurückgegebene Versprechen 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 „/“ beginnen oder enden. |
queryConditions |
Array | Ein Array mit Abfragebedingungen. Für jede Abfrage gibt es ein Array mit drei Werten: key, operator und expectedValue. z. B.:
[[‚id‘, ‚<‘, ‚5‘], [‚state‘, ‚==‘, ‚CA‘]]. Die Bedingungen werden in einer AND-Beziehung zusammengefasst, um das Abfrageergebnis zu erstellen. Eine Liste kompatibler Abfrageoperatoren finden Sie unter Abfrageoperatoren von Firestore. |
options |
Objekt | Optional. Unterstützte Optionen sind: projectId, disableCache, limit und transaction. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unter Optionen unten. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn kein Wert angegeben ist, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, sofern 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, wird GOOGLE_CLOUD_PROJECT bereits auf die ID des Google Cloud-Projekts festgelegt. |
disableCache |
Boolesch | Optional: Bestimmt, ob der Cache deaktiviert werden soll. Caching ist standardmäßig aktiviert, wodurch die Ergebnisse für die Dauer der Anfrage im Cache gespeichert werden. |
limit |
number | Optional: Ändert die maximale Anzahl von Ergebnissen, die von der Abfrage zurückgegeben werden. Der Standardwert ist 5. |
transaction |
String | Optional: Der aus Firestore.runTransaction() abgerufene Wert. Kennzeichnet den Vorgang, der innerhalb 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
Mit der Funktion Firestore.runTransaction
kann der Nutzer atomar in Firestore lesen und schreiben. Wenn ein gleichzeitiger Schreibvorgang oder ein anderer Transaktionskonflikt auftritt, wird die Transaktion bis zu zweimal wiederholt. Wenn sie nach insgesamt drei Versuchen fehlschlägt, wird sie von der API abgelehnt. Diese API gibt ein Promise zurück, das für jeden Schreibvorgang in ein Array von Dokument-IDs aufgelöst wird, wenn die Transaktion erfolgreich ist, und wenn sie 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-/Abfrage-API-Aufrufe übergeben werden. Diese Callback-Funktion muss ein Versprechen zurückgeben. Der Callback kann bis zu dreimal ausgeführt werden, bevor ein Fehler auftritt. |
options |
Objekt | Optional. Die einzige unterstützte Option ist projectId. Unbekannte Optionstasten werden ignoriert. Weitere Informationen finden Sie unter Optionen unten. |
Parameter | Typ | Beschreibung |
---|---|---|
projectId |
String | Optional: Google Cloud Platform-Projekt-ID. Wenn kein Wert angegeben ist, wird projectId aus der Umgebungsvariablen GOOGLE_CLOUD_PROJECT abgerufen, sofern 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, wird 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);
Fehler, die in jeder Firestore-Funktion verfügbar sind, 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.
Verknüpfte Berechtigungen
JSON
Gibt ein Objekt zurück, das JSON-Funktionen bereitstellt.
Die Funktion parse()
parst einen JSON-String, um den im String beschriebenen Wert oder das entsprechende Objekt zu erstellen. 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()
wandelt die Eingabe in einen JSON-String um. Wenn der Wert nicht geparst werden kann (z.B. wenn 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);
Verknüpfte Berechtigungen
Keine.
Math
Ein Objekt mit Math
-Funktionen.
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 der mathematischen Funktion werden in Zahlen umgewandelt.
Verknüpfte Berechtigungen
Keine.
Messages
Die folgenden APIs ermöglichen das Weiterleiten von Nachrichten zwischen verschiedenen Teilen eines Containers.
addMessageListener
Fügt eine Funktion hinzu, die eine Nachricht eines bestimmten Typs überwacht. Wenn eine Nachricht dieses Typs über die sendMessage
API (in der Regel durch ein Tag) gesendet wird, 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, empfängt der Callback Nachrichten zu allen Ereignissen, die vom Client erstellt werden. Wenn der Callback Nachrichten nur von einem bestimmten Ereignis erhalten soll, binden Sie diese API mit bindToEvent
in der Funktion onStart
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, auf den gewartet 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, tut 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.
});
}
});
});
Verknüpfte Berechtigungen
Berechtigung use_message
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens Folgendes ermöglicht:
- Ein Nachrichtentyp mit
Usage
vonlisten
oderlisten_and_send
.
hasMessageListener
Gibt „true“ zurück, wenn ein Nachrichten-Listener für den angegebenen Nachrichtentyp hinzugefügt wurde. Gibt andernfalls „false“ zurück.
Syntax
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
Verknüpfte Berechtigungen
Keine.
sendMessage
Sendet eine Nachricht des angegebenen Typs an einen registrierten Listener. Hiermit 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 Nachrichtentyp, der gesendet werden soll. Wenn der Wert kein String ist, wird er in einen String umgewandelt. |
message |
Objekt | Die Nachricht, die gesendet werden soll. Wenn die Nachricht kein Objekt ist, tut die API nichts. |
Verknüpfte Berechtigungen
Berechtigung use_message
erforderlich. Die Berechtigung muss so konfiguriert sein, dass sie mindestens Folgendes ermöglicht:
- Ein Nachrichtentyp mit
Usage
vonlisten_and_send
odersend
.
Object
Gibt ein Objekt zurück, das Object
-Methoden bereitstellt.
Die Methode keys()
liefert das Verhalten der Standardbibliothek Object.keys(). Sie gibt ein Array mit den Aufzählungswerten eines bestimmten Objekts in der Reihenfolge zurück, in der sich eine for...in...
-Schleife befindet. 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 mit den eigenen Aufzählungswerten für ein bestimmtes Objekt in derselben Reihenfolge zurück wie bei einer for...in...
-Schleife. Wenn der Eingabewert kein Objekt ist, wird er in ein Objekt umgewandelt.
Die Methode entries()
liefert das Verhalten der Standardbibliothek Object.entry(). Sie gibt ein Array mit den eigenen Aufzählungselementen [key, value]
eines bestimmten Objekts in derselben Reihenfolge zurück, in der eine for...in...
-Schleife ausgeführt werden würde. Wenn der Eingabewert kein Objekt ist, wird er in ein Objekt umgewandelt.
Die Methode freeze()
liefert das Verhalten der Standardbibliothek Object.freeze(). Ein eingefrorenes Objekt kann nicht mehr geändert werden. Das Einfrieren eines Objekts verhindert, dass neue Attribute hinzugefügt, bestehende Attribute entfernt oder die Werte vorhandener Attribute geändert werden. freeze()
gibt dasselbe Objekt zurück, das übergeben wurde. Ein einfaches oder Null-Argument wird so behandelt, als wäre es ein eingefrorenes Objekt, und wird zurückgegeben.
Die Methode delete()
liefert das Verhalten des Operators für die Standardbibliothek. Der angegebene Schlüssel wird nur dann aus dem Objekt entfernt, wenn das Objekt einfriert.
Wie beim Löschen der Standardbibliothek wird auch dann true
zurückgegeben, wenn der erste Eingabewert (objectInput
) ein Objekt ist, das nicht eingefroren ist, auch wenn der zweite Eingabewert (keyToDelete
) einen nicht vorhandenen Schlüssel angibt. In allen anderen Fällen wird false
zurückgegeben. Es unterscheidet sich jedoch in folgenden Punkten vom Operator „Standardbibliothek“:
keyToDelete
darf kein punktgetrennter String sein, der einen verschachtelten Schlüssel angibt.- Mit
delete()
können keine Elemente aus einem Array entfernt werden. - Mit
delete()
können keine Attribute aus dem globalen Bereich 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 |
---|---|---|
Objekteingabe | Beliebig | Das Objekt, dessen Schlüssel aufgelistet werden sollen. Wenn die Eingabe kein Objekt ist, wird sie in ein Objekt umgewandelt. |
Objekt.Werte
Parameter | Typ | Beschreibung |
---|---|---|
Objekteingabe | Beliebig | Das Objekt, dessen Werte aufgelistet werden sollen. Wenn die Eingabe kein Objekt ist, wird sie in ein Objekt umgewandelt. |
Object.entry
Parameter | Typ | Beschreibung |
---|---|---|
Objekteingabe | Beliebig | Das Objekt, dessen Schlüssel/Wert-Paare aufgezählt werden sollen. Wenn die Eingabe kein Objekt ist, wird sie in ein Objekt umgewandelt. |
Object.freeze
Parameter | Typ | Beschreibung |
---|---|---|
Objekteingabe | Beliebig | Das Objekt, das gesperrt werden soll Wenn die Eingabe kein Objekt ist, wird sie als eingefrorenes Objekt behandelt. |
Objekt löschen
Parameter | Typ | Beschreibung |
---|---|---|
Objekteingabe | Beliebig | Das 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 Versprechen bereitstellt.
Promise-Objekte funktionieren funktionell mit JavaScript-Versprechen. Jede Instanz hat drei Methoden, die ein Promise zurückgeben, die weitere Aktionen ermöglicht, wenn ein Promise abgewickelt wird:
.then()
: Behandelt sowohl gelöste als auch abgelehnte Fälle. Es werden zwei Callbacks als Parameter verwendet: einer für den Erfolgsfall und einer für den Fehler..catch()
: Behandelt nur abgelehnte Anfragen. Übernimmt einen Callback als Parameter..finally()
: bietet Code für die Ausführung des Codes, unabhängig davon, ob das Versprechen aufgelöst oder abgelehnt wurde. Übernimmt einen Callback als Parameter, der ohne Argument aufgerufen wird.
Eine Variable, die ein Promise zurückgibt, entspricht dem aufgelösten Wert des Promises oder false
, wenn das Promise ablehnt.
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 Versprechen zurück, das entweder
- aufgelöst, wenn alle Eingaben aufgelöst wurden, oder
- lehnt ab, wenn eine Eingabe abgelehnt wird
Syntax
Promise.all(inputs);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
inputs |
Array | Ein Array von Werten oder Versprechen. Wenn eine Eingabe kein Versprechen ist, wird sie so behandelt, als wäre der aufgelöste Wert eines Versprechens. 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: ''}]
});
Verknüpfte Berechtigungen
Keine.
Promise.create
Erstellt ein Versprechen, das funktionell einem JavaScript-Versprechen entspricht.
Syntax
Promise.create(resolver);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
resolver |
Funktion | Eine Funktion, die mit zwei Funktionen aufgerufen wird: aufgelöst und abgelehnt Das zurückgegebene Versprechen wird aufgelöst oder abgelehnt, wenn der entsprechende Parameter aufgerufen wird. Gibt einen Fehler aus, wenn der Resolver keine Funktion ist. |
Beispiel
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
Verknüpfte Berechtigungen
Keine.
APIs testen
Diese APIs funktionieren in Sandbox-JavaScript-Tests, 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 benutzerdefinierten Vorlagentests]
assertApi
Gibt ein Matcher-Objekt zurück, mit dem fließende Assertions zur angegebenen API gemacht werden können.
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 dem Modell der [Truth]-Bibliothek von Google nachempfunden. Sie gibt ein Objekt zurück, mit dem fließende Assertions zum Wert eines Subjekts erstellt werden können. Bei einem fehlgeschlagenen Fehler wird der Test sofort beendet und als fehlgeschlagen markiert. Ein Fehler in einem Test hat jedoch keine Auswirkungen auf andere Testläufe.
Syntax
assertThat(actual, opt_message)
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
actual |
Beliebig | Der Wert für die fließende Überprüfung. |
opt_message |
String | Optionale Nachricht, die ausgegeben wird, wenn die Assertion fehlschlägt. |
Matcher
Matcher | Beschreibung |
---|---|
isUndefined() |
Es wird behauptet, dass der Betreff undefined ist. |
isDefined() |
Es wird behauptet, dass der Betreff nicht undefined ist. |
isNull() |
Es wird behauptet, dass der Betreff null ist. |
isNotNull() |
Es wird behauptet, dass der Betreff nicht null ist. |
isFalse() |
Es wird behauptet, dass der Betreff false ist. |
isTrue() |
Es wird behauptet, dass der Betreff true ist. |
isFalsy() |
Es wird behauptet, das Subjekt fälschlich zu sein. Falsche Werte sind undefined , null , false , NaN , 0 und (*) (leerer String). |
isTruthy() |
Es wird behauptet, das Thema sei wahr. Falsche Werte sind undefined , null , false , NaN , 0 und (*) (leerer String). |
isNaN() |
Es wird behauptet, dass das Subjekt der Wert NaN ist. |
isNotNaN() |
Es wird behauptet, dass das Subjekt neben NaN ein beliebiger Wert ist. |
isInfinity() |
Es wird behauptet, dass das Thema positiv oder negativ unendlich ist. |
isNotInfinity() |
Es wird behauptet, dass das Thema ein beliebiger Wert neben einem positiven oder negativen Infinity ist. |
isEqualTo(expected) |
Es wird behauptet, dass der Subjekt dem angegebenen Wert entspricht. Dies ist ein Wertvergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
isNotEqualTo(expected) |
Es wird behauptet, dass der Subjekt nicht mit dem angegebenen Wert übereinstimmt. Dies ist ein Wertevergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
isAnyOf(...expected) |
Es wird behauptet, dass der Betreff einem der angegebenen Werte entspricht. Dies ist ein Wertevergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
isNoneOf(...expected) |
Es wird behauptet, dass der Betreff mit keinem der angegebenen Werte übereinstimmt. Dies ist ein Wertevergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
isStrictlyEqualTo(expected) |
Es wird behauptet, dass der Betreff (=== ) genau dem angegebenen Wert entspricht. |
isNotStrictlyEqualTo(expected) |
Gibt an, dass der Betreff (!== ) nicht genau dem angegebenen Wert entspricht. |
isGreaterThan(expected) |
Gibt an, dass der Betreff größer als (> ) dem angegebenen Wert in einem geordneten Vergleich ist. |
isGreaterThanOrEqualTo(expected) |
Gibt an, dass das Thema (>= ) größer oder gleich dem angegebenen Wert in einem geordneten Vergleich ist. |
isLessThan(expected) |
Gibt an, dass der Betreff kleiner als (< ) dem angegebenen Wert in einem geordneten Vergleich ist. |
isLessThanOrEqualTo(expected) |
Gibt an, dass das Thema kleiner als oder gleich (<= ) dem angegebenen Wert in einem geordneten Vergleich ist. |
contains(...expected) |
Behauptet, der Betreff ist ein Array oder String, der alle angegebenen Werte in beliebiger Reihenfolge enthält. Dies ist ein Wertevergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
doesNotContain(...expected) |
Damit wird behauptet, dass es sich bei dem Betreff um ein Array oder einen String handelt, der keinen der angegebenen Werte enthält. Dies ist ein Wertevergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
containsExactly(...expected) |
Behauptet, der Betreff ist ein Array, das alle angegebenen Werte in beliebiger Reihenfolge und keine anderen Werte enthält. Dies ist ein Wertevergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
doesNotContainExactly(...expected) |
Behauptet, der Subjekt ist ein Array, das eine andere Gruppe von Werten von den angegebenen Werten in beliebiger Reihenfolge enthält. Dies ist ein Wertevergleich, kein Referenzvergleich. Der Inhalt von Objekten und Arrays wird rekursiv verglichen. |
hasLength(expected) |
Damit wird behauptet, dass es sich bei dem Betreff um ein Array oder einen String mit der angegebenen Länge handelt. Die Assertion schlägt immer fehl, wenn der Wert kein Array oder String ist. |
isEmpty() |
Damit wird behauptet, 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() |
Damit wird behauptet, dass es sich bei dem Betreff um ein Array oder einen String handelt, der nicht leer ist (Länge > 0). Die Assertion schlägt immer fehl, wenn der Wert kein Array oder String ist. |
isArray() |
Damit wird behauptet, dass es sich bei dem Betreff um ein Array handelt. |
isBoolean() |
Damit wird bestätigt, dass der Betreff ein boolescher Wert ist. |
isFunction() |
Es wird behauptet, dass es sich bei dem Typ des Subjekts um eine Funktion handelt. |
isNumber() |
Es wird behauptet, dass der Betreff eine Zahl ist. |
isObject() |
Geltt, dass der Typ des Subjekts ein Objekt ist. |
isString() |
Damit wird behauptet, dass es sich bei dem Betreff um einen String handelt. |
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 fehl und die angegebene Nachricht wird ausgegeben, sofern angegeben.
Syntax
fail(opt_message);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
opt_message |
String | Optionaler Text der Fehlermeldung. |
Beispiel
fail('This test has failed.');
mock
Mit der mock
API können Sie das Verhalten von Sandbox-APIs überschreiben. Die Mock-API kann im Vorlagencode sicher verwendet werden. Wenn der Testmodus nicht aktiviert ist, funktioniert sie nicht. Diese werden vor jedem Test zurückgesetzt.
Syntax
mock(apiName, returnValue);
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
apiName |
String | Der Name der zu simulierenden API. Derselbe String, der an require() übergeben wird. |
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 Sandboxed 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 |
Objekt | 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'});