Questo documento descrive le API per il tagging lato server.
addEventCallback
Registra una funzione di callback che verrà richiamata alla fine di un evento. La callback verrà richiamata quando tutti i tag dell'evento sono stati eseguiti. La callback riceve due valori: l'ID del contenitore che richiama la funzione e un oggetto che contiene informazioni sull'evento.
Quando questa API viene utilizzata in un tag, è associata all'evento corrente. Quando questa
API viene utilizzata in un client, deve essere associata a un evento specifico utilizzando la
funzione bindToEvent dell'API runContainer. Per maggiori dettagli, consulta l'esempio.
Sintassi
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
callback |
funzione | La funzione da richiamare al termine dell'evento. |
L'oggetto eventData contiene i seguenti dati:
| Nome chiave | Tipo | Descrizione |
|---|---|---|
tags |
Array |
Un array di oggetti dati tag. Ogni tag attivato durante l'evento
avrà una voce in questo array. L'oggetto dati tag contiene l'ID del tag (id), il relativo stato di esecuzione (status) e il relativo tempo di esecuzione (executionTime). I dati del tag includeranno anche metadati aggiuntivi del tag configurati sul tag.
|
In un 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 un tag:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
Autorizzazioni associate
callLater
Pianifica una chiamata a una funzione in modo asincrono. La funzione verrà
chiamata dopo la restituzione del codice corrente. Equivalente a
setTimeout(<function>, 0).
Esempio
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
Sintassi
callLater(function)
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
function |
funzione | La funzione da chiamare. |
Autorizzazioni associate
Nessuno.
claimRequest
Utilizza questa API in un client per rivendicare la richiesta. Una volta acquisita una richiesta, il container non esegue altri client.
Questa API genera un'eccezione se viene chiamata in un tag o in una variabile. Questa API genera un'eccezione se viene chiamata dopo la restituzione del client (ad es. se viene chiamata in un callback asincrono come in callLater o nella funzione runContainer onComplete).
Un client deve rivendicare la richiesta utilizzando questa API prima di chiamare l'API runContainer.
Esempio
const claimRequest = require('claimRequest');
claimRequest();
Sintassi
claimRequest();
Autorizzazioni associate
Nessuno.
computeEffectiveTldPlusOne
Restituisce il dominio di primo livello effettivo + 1 (eTLD+1) del dominio o dell'URL specificato. L'eTLD+1 viene calcolato valutando il dominio in base alle regole dell'elenco dei suffissi pubblici. L'eTLD+1 è in genere il dominio di livello più alto su cui puoi impostare un cookie.
Se l'argomento è nullo o indefinito, il valore dell'argomento viene restituito senza modifiche. In caso contrario, l'argomento viene forzato a una stringa. Se l'argomento non è un dominio o un URL valido, viene restituita una stringa vuota. Se il server non è in grado di recuperare l'elenco dei suffissi pubblici, il valore dell'argomento viene restituito invariato.
Esempio
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
Sintassi
computeEffectiveTldPlusOne(domainOrUrl);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
domainOrUrl |
string | Un dominio o un URL su cui calcolare l'eTLD+1. |
Autorizzazioni associate
Nessuno.
createRegex
Crea una nuova istanza di espressione regolare e la restituisce racchiusa in un oggetto. Non puoi
accedere direttamente all'espressione regolare. Tuttavia, puoi passarlo all'API testRegex,
String.replace(), String.match() e String.search().
Restituisce null se l'espressione regolare non è valida o se Re2 non è disponibile sul server.
Questa API utilizza un'implementazione Re2. L'immagine Docker del server deve essere la versione 2.0.0 o successiva.
Esempio
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
Sintassi
createRegex(pattern, flags);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
pattern |
string | Testo dell'espressione regolare. |
flags |
string | Una stringa facoltativa contenente i flag per l'espressione regolare da creare. Sono supportati i flag "g" (globale) e "i" (ignora maiuscole/minuscole). Tutti gli altri caratteri vengono ignorati automaticamente. |
Autorizzazioni associate
Nessuno.
Versione minima dell'immagine
decodeUri
Decodifica tutti i caratteri codificati nell'URI fornito. Restituisce una stringa che
rappresenta l'URI decodificato. Restituisce undefined se viene fornito un input non valido.
Esempio
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
Sintassi
decodeUri(encoded_uri);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
encoded_uri |
string |
Un URI codificato da
encodeUri() o con altri mezzi.
|
Autorizzazioni associate
Nessuno.
decodeUriComponent
Decodifica tutti i caratteri codificati nel componente URI fornito. Restituisce una stringa che rappresenta il componente URI decodificato. Restituisce undefined quando
viene fornito un input non valido.
Esempio
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
Sintassi
decodeUriComponent(encoded_uri_component);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
encoded_uri_component |
string |
Un componente URI codificato da
encodeUriComponent()
o in altro modo.
|
Autorizzazioni associate
Nessuno.
encodeUri
Restituisce un URI (Uniform Resource Identifier) codificato eseguendo l'escape dei caratteri speciali. Restituisce una stringa che rappresenta la stringa fornita codificata come URI.
Esempio
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
Sintassi
encodeUri(uri);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
uri |
string | Un URI completo. |
Autorizzazioni associate
Nessuno.
encodeUriComponent
Restituisce un URI (Uniform Resource Identifier) codificato eseguendo l'escape dei caratteri speciali. Restituisce una stringa che rappresenta la stringa fornita codificata come URI.
Esempio
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
Sintassi
encodeUriComponent(str);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
str |
string | Un componente di un URI. |
Autorizzazioni associate
Nessuno.
extractEventsFromMpv1
Traduce una richiesta Measurement Protocol V1 in entrata in un elenco di eventi in formato Unified Schema. Restituisce l'elenco degli eventi estratti. Genera un errore se la richiesta non è nel formato corretto.
Esempio
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.
}
}
Sintassi
extractEventsFromMpv1();
Autorizzazioni associate
Richiede l'autorizzazione read_request. L'autorizzazione deve essere configurata per
consentire l'accesso almeno a:
bodyquery parameters
extractEventsFromMpv2
Traduce una richiesta Measurement Protocol V2 in entrata in un elenco di eventi in formato Unified Schema. Restituisce l'elenco degli eventi estratti. Genera un errore se la richiesta non è nel formato corretto.
Esempio
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.
}
}
Sintassi
extractEventsFromMpv2();
Autorizzazioni associate
Richiede l'autorizzazione read_request. L'autorizzazione deve essere configurata per
consentire l'accesso almeno a:
bodyquery parameters
fromBase64
Decodifica una stringa con codifica Base64. Restituisce undefined se l'input non è valido.
Sintassi
fromBase64(base64EncodedString);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
base64EncodedString |
string | Stringa con codifica Base64. |
Esempio
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
Autorizzazioni associate
Nessuno.
generateRandom
Restituisce un numero (intero) casuale all'interno dell'intervallo specificato.
Esempio
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
Sintassi
generateRandom(min, max);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
min |
number | Valore potenziale minimo dell'intero restituito (incluso). |
max |
number | Valore potenziale massimo dell'intero restituito (incluso). |
Autorizzazioni associate
Nessuno.
getAllEventData
Restituisce una copia dei dati dell'evento.
Sintassi
getAllEventData();
Autorizzazioni associate
getClientName
Restituisce una stringa contenente il nome del client corrente.
Sintassi
getClientName();
Autorizzazioni associate
getContainerVersion
Restituisce un oggetto contenente dati sul contenitore corrente. L'oggetto restituito avrà i seguenti campi:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
Esempio
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
Sintassi
getContainerVersion();
Autorizzazioni associate
getCookieValues
Restituisce un array contenente i valori di tutti i cookie con il nome specificato.
Esempio
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
Sintassi
getCookieValues(name[, noDecode]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
name |
string | Nome del cookie. |
noDecode |
boolean |
Se true, i valori dei cookie non verranno decodificati prima di essere
restituiti. Il valore predefinito è false.
|
Autorizzazioni associate
getEventData
Restituisce una copia del valore nel percorso specificato nei dati evento. Restituisce
undefined se non sono presenti dati sugli eventi o se non è presente alcun valore nel percorso specificato.
Esempio
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
keyPath |
any |
Il percorso della chiave, in cui i componenti sono separati da punti. I
componenti del percorso possono essere chiavi in un oggetto o indici in un array. Se
keyPath non è una stringa, viene convertito in una stringa.
|
Sintassi
getEventData(keyPath);
Autorizzazioni associate
getGoogleAuth
Restituisce un oggetto di autorizzazione che, se utilizzato con
sendHttpGet o sendHttpRequest, includerà
un'intestazione di autorizzazione per le API Google Cloud. Questa API utilizza le
credenziali predefinite dell'applicazione per trovare automaticamente le credenziali dall'ambiente server.
Esempio
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();
}
});
Sintassi
getGoogleAuth(scopes);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
scopes
|
Array | Un array di ambiti OAuth 2.0 delle API di Google per richiedere l'accesso. |
Autorizzazioni associate
Richiede l'autorizzazione use_google_credentials. L'autorizzazione deve essere
configurata con uno o più ambiti consentiti.
getGoogleScript
Recupera una risorsa da un insieme predeterminato di script Google e restituisce una promessa con lo script e i metadati di memorizzazione nella cache associati.
La promessa verrà risolta in un oggetto contenente due chiavi: script e
metadata. Se la richiesta non va a buon fine, la promessa verrà rifiutata con una chiave reason.
L'oggetto metadata conterrà i seguenti metadati di memorizzazione nella cache in base alle intestazioni di risposta della risorsa; ogni campo sarà presente solo se l'intestazione corrispondente è presente nella risposta della risorsa.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
Esempio
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
Sintassi
getGoogleScript(script[, options]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
script |
string |
Il nome dello script. I copioni supportati sono
'ANALYTICS', 'GTAG' e
'GTM'.L'opzione 'ANALYTICS'
recupera lo script di Google Analytics da
https://www.google-analytics.com/analytics.js.L'opzione 'GTAG' recupera lo script del tag globale del sito (gtag.js)
da https://www.googletagmanager.com/gtag/js.L'opzione 'GTM' recupera lo script di Google Tag Manager
da https://www.googletagmanager.com/gtm.js.
|
options |
oggetto | Opzioni di richiesta facoltative. Di seguito sono riportate le opzioni supportate. |
Opzioni
| Opzione | Tipo | Descrizione |
|---|---|---|
id |
string |
Valido per 'GTAG' con l'ID misurazione gtag e
'GTM' con l'ID contenitore web (ad es. GTM-XXXX).
|
debug |
any | Se è true, richiede e restituisce la versione di debug dello script di misurazione. |
timeout |
number |
Il timeout della richiesta in millisecondi; i valori non positivi vengono ignorati. Se
la richiesta scade, il callback verrà richiamato con
undefined per il valore dello script e {} per l'oggetto
dei metadati.
|
Le chiavi delle opzioni non riconosciute vengono ignorate.
Autorizzazioni associate
Richiede l'autorizzazione send_http. L'autorizzazione deve essere configurata per consentire
l'accesso almeno a:
- Consenti domini Google
getRemoteAddress
Restituisce una rappresentazione stringa dell'indirizzo IP da cui ha avuto origine la richiesta, ad esempio 12.345.67.890 per IPv4 o 2001:0db8:85a3:0:0:8a2e:0370:7334 per IPv6, leggendo le intestazioni delle richieste come Forwarded e X-Forwarded-For.
Nota: questa API tenta di rilevare l'IP di origine, ma
non può garantire che il risultato sia accurato.
Sintassi
getRemoteAddress();
Autorizzazioni associate
Richiede l'autorizzazione read_request. L'autorizzazione deve essere configurata per
consentire l'accesso almeno a:
- Intestazioni
ForwardedeX-Forwarded-For - Indirizzo IP remoto
getRequestBody
Restituisce il corpo della richiesta come stringa, se presente, o undefined altrimenti.
Sintassi
getRequestBody();
Autorizzazioni associate
getRequestHeader
Restituisce il valore dell'intestazione della richiesta denominata come stringa, se presente, o
undefined altrimenti. Se l'intestazione viene ripetuta, i valori restituiti vengono uniti
con ', '.
Esempio
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
Sintassi
getRequestHeader(headerName);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
headerName |
string | Il nome dell'intestazione. Questo valore non fa distinzione tra maiuscole e minuscole. |
Autorizzazioni associate
getRequestMethod
Restituisce il metodo di richiesta, ad esempio 'GET' o 'POST', come stringa.
Esempio
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
Sintassi
getRequestMethod();
Autorizzazioni associate
Nessuno.
getRequestPath
Restituisce il percorso della richiesta senza la stringa di query. Ad esempio, se l'URL è
'/foo?id=123', viene restituito '/foo'. Rimuove automaticamente il prefisso dell'URL del contenitore del server dal percorso. Ad esempio, se l'URL del contenitore server è
https://example.com/analytics e il percorso della richiesta è '/analytics/foo', questo
restituisce '/foo'.
Esempio
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
Sintassi
getRequestPath();
Autorizzazioni associate
getRequestQueryParameter
Restituisce il valore decodificato del parametro della stringa di query denominato come stringa o undefined se il parametro non è presente. Se il parametro viene ripetuto nella
stringa di query, verrà restituito il primo valore visualizzato nella stringa di query.
Esempio
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
Sintassi
getRequestQueryParameter(name);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
name |
string | Il nome del parametro di ricerca. |
Autorizzazioni associate
getRequestQueryParameters
Restituisce i parametri di query della richiesta HTTP in entrata come oggetto che mappa i nomi dei parametri di query al valore o ai valori corrispondenti. I nomi e i valori dei parametri vengono decodificati.
Esempio
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
Sintassi
getRequestQueryParameters();
Autorizzazioni associate
getRequestQueryString
Restituisce la query della richiesta come stringa, senza il punto interrogativo iniziale, o una stringa vuota se l'URL della richiesta non include una stringa di query.
Esempio
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
Sintassi
getRequestQueryString();
Autorizzazioni associate
getTimestamp
Deprecato. Preferisci getTimestampMillis.
Restituisce un numero che rappresenta l'ora corrente in millisecondi dall'epoca Unix, come restituito da Date.now().
Sintassi
getTimestamp();
Autorizzazioni associate
Nessuno.
getTimestampMillis
Restituisce un numero che rappresenta l'ora corrente in millisecondi dall'epoca Unix, come restituito da Date.now().
Sintassi
getTimestampMillis();
Autorizzazioni associate
Nessuno.
getType
Restituisce una stringa che descrive il tipo del valore specificato.
| Tipo input | Valore restituito |
|---|---|
| string | 'string' |
| number | 'number' |
| boolean | 'boolean' |
| null | 'null' |
| undefined | 'undefined' |
| Array | 'array' |
| Oggetto | 'object' |
| Funzione | 'function' |
Esempio
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);
}
Sintassi
getType(value);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
value |
any | Valore di input. |
Autorizzazioni associate
Nessuno.
hmacSha256
Calcola una firma codificata utilizzando HMAC (Hash-based Message Authentication Code) con SHA-256. Il valore predefinito è la codifica base64url.
Per utilizzare questa API, imposta la variabile di ambiente SGTM_CREDENTIALS sul server
sul percorso di un file di chiave JSON codificato in UTF-8 con il seguente formato:
{
"keys": {
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
}
I valori sono chiavi HMAC codificate in base64. Il testo JSON non deve iniziare con un indicatore dell'ordine dei byte.
Esempio
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;
Sintassi
hmacSha256(data, keyId, options)
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
data |
string | I dati per calcolare il valore HMAC. |
keyId
|
string | Un ID chiave del file della chiave JSON che fa riferimento alla chiave da utilizzare. |
options
|
oggetto | Configurazione API facoltativa. (vedi Opzioni di seguito). |
Opzioni
| Opzione | Tipo | Descrizione |
|---|---|---|
outputEncoding
|
string | Specifica il formato di codifica per il valore restituito. I formati supportati sono hex,
base64 o base64url. Se non specificato, il valore predefinito è
base64url. |
Autorizzazioni associate
Versione minima dell'immagine
isRequestMpv1
Restituisce true se la richiesta in entrata è una richiesta Measurement Protocol V1, altrimenti restituisce false.
Esempio
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
Sintassi
isRequestMpv1();
Autorizzazioni associate
Nessuno.
isRequestMpv2
Restituisce true se la richiesta in entrata è una richiesta Measurement Protocol V2 o
false in caso contrario.
Esempio
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
Sintassi
isRequestMpv2();
Autorizzazioni associate
Nessuno.
logToConsole
Registra i relativi argomenti nella console.
Questi log sono visibili in Esplora log nella console Google Cloud.
Da Esplora log esegui la query logName =~ "stdout" per visualizzare le voci di log
create da questa API.
Esempio
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
Sintassi
logToConsole(argument1[, argument2, ...]);
Parametri
L'API accetta uno o più argomenti, ognuno dei quali viene convertito in una stringa, se necessario, e registrato nella console.
Autorizzazioni associate
makeInteger
Converte il valore specificato in un numero (intero).
Sintassi
makeInteger(value);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
value |
any type | Il valore da convertire. |
Autorizzazioni associate
Nessuno.
makeNumber
Converte il valore specificato in un numero.
Sintassi
makeNumber(value);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
value |
any type | Il valore da convertire. |
Autorizzazioni associate
Nessuno.
makeString
Restituisce il valore specificato come stringa.
Sintassi
makeString(value);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
value |
any type | Il valore da convertire. |
Autorizzazioni associate
Nessuno.
makeTableMap
Converte un semplice oggetto tabella con due colonne in un Map. Viene utilizzato per
modificare un campo del modello SIMPLE_TABLE con due colonne in un formato più gestibile.
Ad esempio, questa funzione potrebbe convertire un oggetto tabella:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
in una mappa:
{
'k1': 'v1',
'k2': 'v2'
}
Restituisce un oggetto: sono state aggiunte le coppie chiave-valore Map convertite o null.
Sintassi
makeTableMap(tableObj, keyColumnName, valueColumnName);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
tableObj |
Elenca |
L'oggetto tabella da convertire. È un elenco di mappe in cui ogni
Map rappresenta una riga della tabella. Ogni nome di proprietà in un oggetto riga è il nome della colonna e il valore della proprietà è il valore della colonna nella riga.
|
keyColumnName |
string |
Nome della colonna i cui valori diventeranno chiavi nel file Map convertito.
|
valueColumnName |
string |
Nome della colonna i cui valori diventeranno valori nel
Map convertito.
|
Autorizzazioni associate
Nessuno.
parseUrl
Restituisce un oggetto che contiene tutte le parti componenti di un determinato URL, simile
all'oggetto URL.
Questa API restituirà undefined per qualsiasi URL non valido. Per gli URL formattati correttamente, i campi non presenti nella stringa URL avranno un valore di stringa vuota,
o nel caso di searchParams, un oggetto vuoto.
L'oggetto restituito avrà i seguenti campi:
{
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,
}
Esempio
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
Sintassi
parseUrl(url);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
url |
string | L'URL completo che verrà analizzato. |
Autorizzazioni associate
Nessuno.
returnResponse
Svuota la risposta impostata in precedenza da altri modelli utilizzando le API che modificano la risposta, tra cui setCookie, setPixelResponse, setResponseBody, setResponseHeader e setResponseStatus. Il valore predefinito è un codice di stato HTTP 200, un corpo vuoto e nessuna intestazione.
Ti consigliamo di utilizzare questa API da un modello client.
Sintassi
returnResponse();
Esempio
Vedi l'esempio di runContainer.
Autorizzazioni associate
runContainer
Esegue la logica del contenitore (variabili, attivatori, tag) nell'ambito di un evento. Se questa API viene chiamata durante l'esecuzione del container, quest'ultimo viene eseguito di nuovo.
I callback onComplete e onStart ricevono una funzione chiamata
bindToEvent. Utilizza bindToEvent per eseguire un'API nel contesto dell'evento.
Per maggiori dettagli, consulta l'esempio addEventCallback.
Ti consigliamo di utilizzare questa API da un modello client.
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());
Sintassi
runContainer(event, onComplete, onStart);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
event |
oggetto | I parametri evento. |
onComplete |
funzione | Un callback richiamato al termine dell'attivazione di tutti i tag. |
onStart |
funzione | Un callback richiamato immediatamente, prima dell'attivazione dei tag. |
Autorizzazioni associate
sendEventToGoogleAnalytics
Invia un singolo evento utilizzando Common Event Data a Google Analytics e restituisce una
promessa che si risolve in un oggetto con una chiave location o
viene rifiutata in un oggetto con una chiave reason. La destinazione, Google Analytics 4,
si basa sull'ID misurazione nei dati sugli eventi.
Il campo location è impostato sull'intestazione location, se presente.
Esempio
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();
});
Sintassi
sendEventToGoogleAnalytics(event);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
event |
oggetto | L'evento in formato schema unificato. |
Autorizzazioni associate
Richiede l'autorizzazione send_http. L'autorizzazione deve essere configurata per consentire
l'accesso almeno a:
- Consenti domini Google
sendHttpGet
Invia una richiesta HTTP GET all'URL specificato e restituisce una promessa che viene risolta con il risultato al termine della richiesta o in caso di timeout.
Il risultato risolto è un oggetto contenente tre chiavi: statusCode, headers e body. Se la richiesta non è riuscita (ad es. URL non valido, nessuna route all'host,
negoziazione SSL non riuscita e così via), la promessa verrà rifiutata con: {reason:
'failed'}. Se l'opzione timeout è stata impostata e la richiesta è scaduta, la
promessa verrà rifiutata con: {reason: 'timed_out'}
Esempio
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);
Sintassi
sendHttpGet(url[, options]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
url |
string | L'URL richiesto. |
options
|
oggetto | (Facoltativo) opzioni di richiesta. (vedi Opzioni di seguito). |
Opzioni
| Opzione | Tipo | Descrizione |
|---|---|---|
headers |
string | Intestazioni della richiesta aggiuntive. |
timeout
|
number | Il timeout, in millisecondi, prima che la
richiesta venga interrotta. Il valore predefinito è 15000. |
authorization
|
oggetto | Oggetto di autorizzazione facoltativo della
chiamata a getGoogleAuth per includere
le intestazioni di autorizzazione quando vengono effettuate richieste
a googleapis.com. |
Autorizzazioni associate
sendHttpRequest
Invia una richiesta HTTP all'URL specificato e restituisce una promessa che viene risolta con la risposta al termine della richiesta o al raggiungimento del timeout.
Il risultato risolto è un oggetto contenente tre chiavi: statusCode, headers e body. Se la richiesta non è riuscita (ad es. URL non valido, nessuna route all'host,
negoziazione SSL non riuscita e così via), la promessa verrà rifiutata con: {reason:
'failed'}. Se l'opzione timeout è stata impostata e la richiesta è scaduta, la
promessa verrà rifiutata con: {reason: 'timed_out'}
Esempio
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']);
});
Sintassi
sendHttpRequest(url[, options[, body]]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
url |
string | L'URL richiesto. |
options
|
oggetto | (Facoltativo) opzioni di richiesta. (vedi Opzioni di seguito). |
body |
string | Corpo della richiesta facoltativo. |
Opzioni
| Opzione | Tipo | Descrizione |
|---|---|---|
headers |
string | Intestazioni della richiesta aggiuntive. |
method |
oggetto | Il metodo di richiesta. Il valore predefinito è GET. |
timeout
|
number | Il timeout, in millisecondi, prima che la
richiesta venga interrotta. Il valore predefinito è 15000. |
authorization
|
oggetto | Oggetto di autorizzazione facoltativo della
chiamata a getGoogleAuth per includere
le intestazioni di autorizzazione quando vengono effettuate richieste
a googleapis.com. |
Autorizzazioni associate
sendPixelFromBrowser
Invia un comando al browser per caricare l'URL fornito come tag <img>. Questo
protocollo di comando è supportato nel tag Google per GA4 e nei
tag web Google Analytics: evento GA. Devi configurare l'URL del contenitore server. Per maggiori dettagli, consulta le istruzioni.
Questa API restituisce false se la richiesta in entrata non supporta il protocollo di comando o se la risposta è già stata svuotata. In caso contrario, questa API
restituisce true.
Esempio:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
Sintassi
sendPixelFromBrowser(url)
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
url |
string | L'URL da inviare al browser. |
Autorizzazioni associate
setCookie
Imposta o elimina un cookie con le opzioni specificate.
Per eliminare un cookie, è necessario impostarne uno con lo stesso percorso e dominio con cui è stato creato e assegnargli un valore di scadenza nel passato, ad esempio "Thu, 01 Jan 1970 00:00:00 GMT".
Tieni presente che returnResponse deve essere chiamato affinché la risposta venga inviata di nuovo al client.
Esempio
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
Sintassi
setCookie(name, value[, options[, noEncode]]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
name |
string | Il nome del cookie. Il nome non distingue tra maiuscole e minuscole. |
value |
string | Il valore del cookie. |
options |
oggetto | Attributi cookie facoltativi:domain, expires, fallbackDomain,httpOnly, max- age, path, secure, esameSite. (vedi Opzioni di seguito). |
noEncode |
boolean |
Se impostato su true, il valore del cookie non verrà codificato. Il valore predefinito è
false.
|
domain: l'host a cui verrà inviato il cookie. Se impostato sul valore speciale "auto", l'host verrà calcolato automaticamente utilizzando la seguente strategia:
- eTLD+1 dell'intestazione
Forwarded, se presente. - eTLD+1 dell'intestazione
X-Forwarded-Host, se presente. - eTLD+1 dell'intestazione
Host.
- eTLD+1 dell'intestazione
expires: la durata massima del cookie. Deve essere una stringa di data in formato UTC, ad esempio "Sat, 26 Oct 1985 08:21:00 GMT". Se vengono impostati sia
expireschemax-age,max-ageha la precedenza.httpOnly: impedisce a JavaScript di accedere al cookie se
true.max-age: numero di secondi fino alla scadenza del cookie. Un numero pari a zero o negativo farà scadere immediatamente il cookie. Se sono impostati sia
expireschemax-age,max-ageha la precedenza.path: un percorso che deve esistere nell'URL richiesto, altrimenti il browser non invierà l'intestazione Cookie.
secure: se impostato su
true, il cookie viene inviato al server solo quando viene effettuata una richiesta da un endpointhttps:.sameSite: afferma che un cookie non deve essere inviato con richieste cross-origin. Deve essere
'strict','lax'o'none'.
Autorizzazioni associate
setPixelResponse
Imposta il corpo della risposta su un GIF 1x1, imposta l'intestazione Content-Type su "image/gif", imposta le intestazioni di memorizzazione nella cache in modo che gli user agent non memorizzino nella cache la risposta e imposta lo stato della risposta su 200.
Tieni presente che returnResponse deve essere chiamato affinché la risposta venga inviata di nuovo al client.
Sintassi
setPixelResponse();
Autorizzazioni associate
Richiede l'autorizzazione access_response. L'autorizzazione deve essere configurata per
consentire l'accesso almeno a:
headers- Must permit the following keyscontent-typecache-controlexpirespragma
bodystatus
setResponseBody
Imposta il corpo della risposta sull'argomento.
Tieni presente che returnResponse deve essere chiamato affinché la risposta venga inviata di nuovo al client.
Sintassi
setResponseBody(body[, encoding]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
body |
string | Il valore da impostare come corpo della risposta. |
encoding |
string |
La codifica dei caratteri del corpo della risposta (il valore predefinito è
'utf8'). I valori supportati includono 'ascii',
'utf8', 'utf16le', 'ucs2',
'base64', 'latin1', 'binary',
e 'hex'.
|
Autorizzazioni associate
Richiede l'autorizzazione access_response. L'autorizzazione deve essere configurata per
consentire l'accesso almeno a:
body
setResponseHeader
Imposta un'intestazione nella risposta che verrà restituita. Se un'intestazione con questo nome (senza distinzione tra maiuscole e minuscole) è stata impostata in precedenza da questa API, la chiamata successiva sovrascriverà o cancellerà il valore impostato dal chiamante precedente.
Tieni presente che returnResponse deve essere chiamato affinché la risposta venga inviata di nuovo al client.
Sintassi
setResponseHeader(name, value);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
name |
string | Il nome dell'intestazione. I nomi delle intestazioni HTTP non fanno distinzione tra maiuscole e minuscole, pertanto il nome dell'intestazione verrà convertito in minuscolo. |
value |
stringa undefined | Il valore dell'intestazione. Se è nullo o non definito, l'intestazione denominata viene rimossa dalla risposta che verrà restituita. |
Autorizzazioni associate
Richiede l'autorizzazione access_response. L'autorizzazione deve essere configurata per
consentire l'accesso almeno a:
headers
setResponseStatus
Imposta il codice di stato HTTP della risposta che verrà restituita.
Tieni presente che returnResponse deve essere chiamato affinché la risposta venga inviata di nuovo al client.
Sintassi
setResponseStatus(statusCode);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
statusCode |
number | Il codice di stato HTTP da restituire. |
Autorizzazioni associate
Richiede l'autorizzazione access_response. L'autorizzazione deve essere configurata per
consentire l'accesso almeno a:
status
sha256
Calcola il digest SHA-256 dell'input e richiama un callback con il
digest codificato in base64, a meno che l'oggetto options non specifichi una codifica
di output diversa.
La firma e il comportamento di questa API corrispondono all'API sha256 per i contenitori web; tuttavia, i modelli personalizzati nei contenitori server devono utilizzare l'API sha256Sync per un codice più semplice.
Esempio
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'});
Sintassi
sha256(input, onSuccess, options = undefined);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
input |
string | La stringa di cui calcolare l'hash. |
onSuccess |
funzione |
Chiamato con il digest risultante, codificato in base64, a meno che l'oggetto options non specifichi una codifica di output diversa.
|
options |
oggetto |
Oggetto delle opzioni facoltativo per specificare la codifica dell'output. Se
specificato, l'oggetto deve contenere la chiave outputEncoding
con valore base64 o hex.
|
Autorizzazioni associate
Nessuno.
sha256Sync
Calcola e restituisce il digest SHA-256 dell'input, codificato in base64,
a meno che l'oggetto options non specifichi una codifica di output diversa.
Esempio
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));
Sintassi
sha256Sync(input, options = undefined);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
input |
string | La stringa di cui calcolare l'hash. |
options |
oggetto |
Oggetto delle opzioni facoltativo per specificare la codifica dell'output. Se
specificato, l'oggetto deve contenere la chiave outputEncoding
con valore base64 o hex.
|
Autorizzazioni associate
Nessuno.
templateDataStorage
Restituisce un oggetto con metodi per accedere all'archiviazione dei dati del modello. L'archiviazione dei dati del modello consente di condividere i dati tra le esecuzioni di un singolo modello. I dati archiviati nell'archivio dati del modello vengono conservati sul server che esegue il container. Nella maggior parte dei casi, il container viene eseguito su più server, quindi l'archiviazione dei dati nell'archivio dati del modello non garantisce che ogni richiesta successiva avrà accesso ai dati.
Il termine "data" nel nome "templateDataStorage" si riferisce al fatto che solo i tipi di dati semplici e non funzionali possono essere archiviati utilizzando questa API. Qualsiasi funzione o
riferimento a funzioni passato all'API verrà archiviato come null.
Sintassi
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();
Esempio
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);
});
Autorizzazioni associate
testRegex
Verifica una stringa rispetto a un'espressione regolare creata tramite l'API createRegex. Restituisce true
se l'espressione regolare corrisponde. In caso contrario, restituisce false.
Un'espressione regolare creata con il flag globale è stateful. Per ulteriori dettagli, consulta la documentazione relativa alle RegExp.
Esempio
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');
Sintassi
testRegex(regex, string);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
regex |
Oggetto | L'espressione regolare da testare, restituita dall'API createRegex. |
string |
string | Stringa di test da testare. |
Autorizzazioni associate
Nessuno.
toBase64
Codifica una stringa come base64 o base64url. Il valore predefinito è la codifica Base64.
Sintassi
toBase64(input, options);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
input |
string | Stringa da codificare. |
options
|
oggetto | Configurazione API facoltativa. (vedi Opzioni di seguito). |
Opzioni
| Opzione | Tipo | Descrizione | Versione minima |
|---|---|---|---|
urlEncoding
|
boolean | Se è true, il risultato verrà codificato utilizzando il formato base64url. |
1.0.0 |
Esempio
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
Autorizzazioni associate
Nessuno.
BigQuery
Restituisce un oggetto che fornisce le funzioni BigQuery.
La funzione BigQuery.insert consente di scrivere dati in una tabella BigQuery. Restituisce una promessa che viene risolta in caso di inserimento riuscito o rifiutata in caso di errore.
Quando l'inserimento va a buon fine, la promessa viene risolta senza argomenti.
Quando l'inserimento non va a buon fine, la promessa viene rifiutata con un elenco di oggetti contenenti il motivo dell'errore ed eventualmente un oggetto riga se si verifica un errore. È possibile che una parte della richiesta venga completata correttamente, mentre altre no. In questo caso, la promessa viene rifiutata con un elenco di errori per ogni riga con un oggetto riga per distinguere le righe inserite (vedi Esempi di errori di seguito). Per saperne di più, consulta la documentazione di BigQuery sui messaggi di errore.
Sintassi
BigQuery.insert(connectionInfo, rows[, options]);
| Parametro | Tipo | Descrizione |
|---|---|---|
connectionInfo |
oggetto |
Definisce le informazioni necessarie per connettersi a una tabella BigQuery. Esiste
un parametro facoltativo e due parametri obbligatori:
|
rows |
Array | Le righe da inserire nella tabella. |
options |
oggetto | Opzioni di richiesta facoltative. Le opzioni supportate sono: ignoreUnknownValues e skipInvalidRows. Le chiavi delle opzioni sconosciute vengono ignorate. (vedi Opzioni di seguito). |
| Parametro | Tipo | Descrizione |
|---|---|---|
ignoreUnknownValues |
boolean | Se impostata su true, accetta le righe contenenti valori che non corrispondono allo schema. I valori sconosciuti vengono ignorati. Il valore predefinito
è false. |
skipInvalidRows |
boolean | Se impostato su true, inserisci tutte le righe valide di una richiesta,
anche se esistono righe non valide. Il valore predefinito è false. |
Un errore di modulo non trovato significa che il contenitore del server probabilmente esegue una versione precedente della nostra immagine che non includeva ancora il modulo BigQuery. Esegui nuovamente il deployment del contenitore del server con le stesse impostazioni utilizzando il nostro script di deployment. Il modulo verrà incluso automaticamente al termine dell'operazione.
Un errore di mancato inserimento in genere ha un oggetto di errore con una chiave reason:
[{reason: 'invalid'}]
Un errore di inserimento può contenere più oggetti di errore con un array errors e un oggetto row. Di seguito è riportato un esempio di risposta di errore
dall'inserimento di due righe in cui solo una riga presenta un errore:
[
{
"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
}
}
]
Esempio
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);
Autorizzazioni associate
Firestore
Restituisce un oggetto che fornisce le funzioni Firestore.
Questa API supporta solo Firestore in modalità Native, non Firestore in modalità Datastore. Inoltre, l'API supporta solo l'utilizzo del database predefinito.
Firestore.read
La funzione Firestore.read legge i dati da un documento Firestore e
restituisce una promessa che si risolve in un oggetto contenente due chiavi:
id e data. Se il documento non esiste, la promessa viene rifiutata con un
oggetto contenente una chiave reason uguale a not_found.
Sintassi
Firestore.read(path[, options]);
| Parametro | Tipo | Descrizione |
|---|---|---|
path |
string | Il percorso del documento o della raccolta. Non deve iniziare o terminare con "/". |
options |
oggetto | (Facoltativo) opzioni di richiesta. Le opzioni supportate sono: projectId, disableCache e transaction. Le chiavi delle opzioni sconosciute vengono ignorate. (vedi Opzioni di seguito). |
| Parametro | Tipo | Descrizione |
|---|---|---|
projectId |
string | Facoltativo. ID progetto Google Cloud. Se omesso, il
projectId viene recuperato dalla variabile di ambiente
GOOGLE_CLOUD_PROJECT, a condizione che l'impostazione
dell'autorizzazione access_firestore
per l'ID progetto sia impostata su * o
GOOGLE_CLOUD_PROJECT. Se il contenitore del server è in esecuzione su
Google Cloud, GOOGLE_CLOUD_PROJECT sarà già impostato sull'ID
del progetto Google Cloud. |
disableCache |
boolean | Facoltativo. Determina se disattivare o meno la cache. La memorizzazione nella cache è abilitata per impostazione predefinita, pertanto i risultati vengono memorizzati nella cache per la durata della richiesta. |
transaction |
string | Facoltativo. Il valore recuperato da Firestore.runTransaction(). Contrassegna l'operazione da utilizzare all'interno di una transazione. |
Esempio
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
La funzione Firestore.write scrive i dati in un documento o una raccolta Firestore. Se il percorso è a una raccolta, verrà creato un documento con un ID generato in modo casuale. Se il percorso è relativo a un documento e questo non esiste, verrà creato. Questa API restituisce una promessa che si risolve nell'ID del
documento aggiunto o modificato. Se viene utilizzata l'opzione di transazione, l'API restituisce comunque una promessa, ma non conterrà l'ID perché le scritture sono raggruppate.
Sintassi
Firestore.write(path, input[, options]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
path |
string | Il percorso del documento o della raccolta. Non deve iniziare o terminare con "/". |
input |
oggetto | Il valore da scrivere nel documento. Se l'opzione di unione è impostata, l'API unirà le chiavi dell'input nel documento. |
options |
oggetto | (Facoltativo) opzioni di richiesta. Le opzioni supportate sono: projectId, merge e transaction. Le chiavi delle opzioni sconosciute vengono ignorate. (vedi Opzioni di seguito). |
| Parametro | Tipo | Descrizione |
|---|---|---|
projectId |
string | Facoltativo. ID progetto Google Cloud. Se omesso, il
projectId viene recuperato dalla variabile di ambiente
GOOGLE_CLOUD_PROJECT, a condizione che l'impostazione
dell'autorizzazione access_firestore
per l'ID progetto sia impostata su * o
GOOGLE_CLOUD_PROJECT. Se il contenitore del server è in esecuzione su
Google Cloud, GOOGLE_CLOUD_PROJECT sarà già impostato sull'ID
del progetto Google Cloud. |
merge |
boolean | Facoltativo. Se impostato su
true, unisci le chiavi dell'input al documento,
altrimenti il metodo sostituirà l'intero documento. Il valore predefinito è
false. |
transaction |
string | Facoltativo. Il valore recuperato da Firestore.runTransaction(). Contrassegna l'operazione da utilizzare all'interno di una transazione. |
Esempio
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
La funzione Firestore.query esegue query sulla raccolta specificata e restituisce una
promessa che si risolve in un array di documenti Firestore che corrispondono alle condizioni della query. L'oggetto del documento Firestore è lo stesso elencato sopra in
Firestore.read. Se non esistono documenti che corrispondono alle condizioni della query,
la promessa restituita verrà risolta in un array vuoto.
Sintassi
Firestore.query(collection, queryConditions[, options]);
| Parametro | Tipo | Descrizione |
|---|---|---|
collection |
string | Il percorso della raccolta. Non deve iniziare o terminare con "/". |
queryConditions |
Array | Un array di condizioni della query. Ogni query si presenta sotto forma di
array con tre valori: chiave,
operatore e expectedValue. ad esempio:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]. Le condizioni vengono combinate con l'operatore AND per creare il risultato della query. Per un elenco degli operatori di query compatibili, consulta Operatori di query di Firestore. |
options |
oggetto | (Facoltativo) opzioni di richiesta. Le opzioni supportate sono: projectId, disableCache, limit e transaction. Le chiavi delle opzioni sconosciute vengono ignorate. (vedi Opzioni di seguito). |
| Parametro | Tipo | Descrizione |
|---|---|---|
projectId |
string | Facoltativo. ID progetto Google Cloud. Se omesso, il
projectId viene recuperato dalla variabile di ambiente
GOOGLE_CLOUD_PROJECT, a condizione che l'impostazione
dell'autorizzazione access_firestore
per l'ID progetto sia impostata su * o
GOOGLE_CLOUD_PROJECT. Se il contenitore del server è in esecuzione su
Google Cloud, GOOGLE_CLOUD_PROJECT sarà già impostato sull'ID
del progetto Google Cloud. |
disableCache |
boolean | Facoltativo. Determina se disattivare o meno la cache. La memorizzazione nella cache è abilitata per impostazione predefinita, pertanto i risultati vengono memorizzati nella cache per la durata della richiesta. |
limit |
number | Facoltativo. Modifica il numero massimo di risultati restituiti dalla query, il valore predefinito è 5. |
transaction |
string | Facoltativo. Il valore recuperato da Firestore.runTransaction(). Contrassegna l'operazione da utilizzare all'interno di una transazione. |
Esempio
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
La funzione Firestore.runTransaction consente all'utente di leggere e scrivere in modo atomico da Firestore. Se si verifica una scrittura simultanea o un altro conflitto di transazione, la transazione verrà ritentata fino a due volte. Se non va a buon fine
dopo tre tentativi totali, l'API rifiuterà la richiesta con un errore. Questa API restituisce
una promessa che si risolve in un array di ID documento, per ogni operazione di scrittura,
se la transazione va a buon fine e verrà rifiutata con l'errore in caso contrario.
Sintassi
Firestore.runTransaction(callback[, options]);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
callback |
funzione | Un callback richiamato con un ID transazione stringa. L'ID transazione può essere passato alle chiamate API di lettura/scrittura/query. Questa funzione di callback deve restituire una promessa. Il callback può essere eseguito fino a tre volte prima di non riuscire. |
options |
oggetto | (Facoltativo) opzioni di richiesta. L'unica opzione supportata è projectId. Le chiavi delle opzioni sconosciute vengono ignorate. (vedi Opzioni di seguito). |
| Parametro | Tipo | Descrizione |
|---|---|---|
projectId |
string | Facoltativo. ID progetto Google Cloud. Se omesso, il
projectId viene recuperato dalla variabile di ambiente
GOOGLE_CLOUD_PROJECT, a condizione che l'impostazione
dell'autorizzazione access_firestore
per l'ID progetto sia impostata su * o
GOOGLE_CLOUD_PROJECT. Se il contenitore del server è in esecuzione su
Google Cloud, GOOGLE_CLOUD_PROJECT sarà già impostato sull'ID
del progetto Google Cloud. |
Esempio
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);
Gli errori disponibili in ogni funzione Firestore verranno rifiutati con un oggetto
contenente una chiave reason:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
I motivi dell'errore possono contenere, a titolo esemplificativo, i codici di errore dell'API REST Firestore.
Autorizzazioni associate
JSON
Restituisce un oggetto che fornisce funzioni JSON.
La funzione parse() analizza una stringa JSON per costruire il valore o l'oggetto
descritto dalla stringa. Se il valore non può essere analizzato (ad es. JSON non valido),
la funzione restituirà undefined. Se il valore di input non è una stringa, l'input verrà convertito in una stringa.
La funzione stringify() converte l'input in una stringa JSON. Se il valore
non può essere analizzato (ad es. l'oggetto ha un ciclo), il metodo restituirà
undefined.
Esempio
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'});
Sintassi
JSON.parse(stringInput);
JSON.stringify(value);
Autorizzazioni associate
Nessuno.
Math
Un oggetto che fornisce funzioni Math.
Sintassi
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);
Parametri
I parametri della funzione matematica vengono convertiti in numeri.
Autorizzazioni associate
Nessuno.
Messages
Le seguenti API funzionano insieme per consentire il passaggio di messaggi tra le diverse parti di un contenitore.
addMessageListener
Aggiunge una funzione che rimane in ascolto di un messaggio di un tipo specifico. Quando un messaggio
di questo tipo viene inviato utilizzando l'API sendMessage (in genere da un tag), la
callback viene eseguita in modo sincrono. Il callback viene eseguito con due parametri:
messageType:stringmessage:Object
Se il callback viene aggiunto in un client, riceverà messaggi in tutti gli eventi creati dal client. Se il callback deve ricevere messaggi
solo da un determinato evento, associa questa API all'evento utilizzando bindToEvent
nella funzione onStart dell'API runContainer. Vedi l'esempio.
Sintassi
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
messageType |
string | Il tipo di messaggio da ascoltare. Se il valore non è una stringa, verrà convertito in una stringa. |
callback |
funzione | Il callback da eseguire quando viene inviato un messaggio del tipo di messaggio applicabile. Se il callback non è una funzione, l'API non farà nulla. |
Esempio
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.
});
}
});
});
Autorizzazioni associate
Richiede l'autorizzazione use_message. L'autorizzazione deve essere configurata per consentire
almeno:
- Un tipo di messaggio con
Usagedilistenolisten_and_send.
hasMessageListener
Restituisce true se è stato aggiunto un listener di messaggi per il tipo di messaggio specificato. In caso contrario, restituisce false.
Sintassi
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
Autorizzazioni associate
Nessuno.
sendMessage
Invia un messaggio del tipo specificato a un listener registrato. Può essere utilizzato per inviare messaggi da un tag al client che ha eseguito il contenitore.
Sintassi
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
messageType |
string | Il tipo di messaggio da inviare. Se il valore non è una stringa, verrà convertito in una stringa. |
message |
oggetto | Il messaggio da inviare. Se il messaggio non è un oggetto, l'API non farà nulla. |
Autorizzazioni associate
Richiede l'autorizzazione use_message. L'autorizzazione deve essere configurata per consentire
almeno:
- Un tipo di messaggio con
Usagedilisten_and_sendosend.
Object
Restituisce un oggetto che fornisce metodi Object.
Il metodo keys() fornisce il comportamento della libreria standard Object.keys(). Restituisce un array dei nomi delle proprietà enumerabili di un determinato oggetto
nello stesso ordine di un ciclo for...in.... Se il valore di input non è un oggetto, verrà forzato a un oggetto.
Il metodo values() fornisce il comportamento della libreria standard Object.values(). Restituisce un array dei valori delle proprietà enumerabili di un determinato oggetto
nello stesso ordine di un ciclo for...in.... Se il valore di input non è un oggetto, verrà forzato a un oggetto.
Il metodo entries() fornisce il comportamento della libreria standard Object.entries(). Restituisce un array di coppie [key, value] di proprietà enumerabili proprie di un determinato oggetto nello stesso ordine di un ciclo for...in.... Se il valore di input non è un oggetto, verrà forzato a un oggetto.
Il metodo freeze() fornisce il comportamento di Object.freeze() della libreria standard. Un oggetto bloccato non può più essere modificato; il blocco di un oggetto impedisce
l'aggiunta di nuove proprietà, la rimozione di quelle esistenti
e la modifica dei valori delle proprietà esistenti. freeze() restituisce lo stesso oggetto passato. Un argomento primitivo o nullo verrà trattato come
se fosse un oggetto bloccato e verrà restituito.
Il metodo delete() fornisce il comportamento dell'operatore di eliminazione della libreria standard. Rimuove la chiave specificata dall'oggetto, a meno che l'oggetto non sia bloccato.
Come l'operatore di eliminazione della libreria standard, restituisce true se il primo valore di input (objectInput) è un oggetto non bloccato, anche se il secondo valore di input (keyToDelete) specifica una chiave inesistente. In tutti gli altri casi, restituisce false. Tuttavia, differisce dall'operatore di eliminazione della libreria standard
per i seguenti aspetti:
keyToDeletenon può essere una stringa delimitata da punti che specifica una chiave nidificata.delete()non può essere utilizzato per rimuovere elementi da un array.delete()non può essere utilizzato per rimuovere proprietà dall'ambito globale.
Sintassi
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
Parametri
Object.keys
| Parametro | Tipo | Descrizione |
|---|---|---|
| objectInput | any | L'oggetto le cui chiavi devono essere enumerate. Se l'input non è un oggetto, verrà forzato a un oggetto. |
Object.values
| Parametro | Tipo | Descrizione |
|---|---|---|
| objectInput | any | L'oggetto di cui enumerare i valori. Se l'input non è un oggetto, verrà forzato a un oggetto. |
Object.entries
| Parametro | Tipo | Descrizione |
|---|---|---|
| objectInput | any | L'oggetto di cui enumerare le coppie chiave/valore. Se l'input non è un oggetto, verrà forzato a un oggetto. |
Object.freeze
| Parametro | Tipo | Descrizione |
|---|---|---|
| objectInput | any | L'oggetto da bloccare. Se l'input non è un oggetto, verrà trattato come un oggetto bloccato. |
Object.delete
| Parametro | Tipo | Descrizione |
|---|---|---|
| objectInput | any | L'oggetto di cui eliminare la chiave. |
| keyToDelete | string | La chiave di primo livello da eliminare. |
Esempio
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
Restituisce un oggetto che fornisce metodi per interagire con le promesse.
Le promesse sono funzionalmente equivalenti alle promesse JavaScript. Ogni istanza ha tre metodi che restituiscono una promessa che consente ulteriori azioni quando una promessa viene risolta:
.then(): gestisce sia le richieste risolte che quelle rifiutate. Richiede due callback come parametri: uno per il caso di successo e uno per il caso di errore..catch(): gestisce solo le richieste rifiutate. Accetta un callback come parametro..finally(): consente di eseguire il codice indipendentemente dal fatto che la promessa sia stata risolta o rifiutata. Accetta un callback come parametro che viene richiamato senza argomenti.
Una variabile che restituisce una promessa è uguale al valore risolto della promessa o a false se la promessa viene rifiutata.
Esempio
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
Restituisce una promessa che:
- viene risolta quando tutti gli input sono stati risolti oppure
- rifiuta quando uno degli input viene rifiutato
Sintassi
Promise.all(inputs);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
inputs |
Array | Un array di valori o promesse. Se un input non è una promessa, viene passato come se fosse il valore risolto di una promessa. Genera un errore se l'input non è una matrice. |
Esempio
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: ''}]
});
Autorizzazioni associate
Nessuno.
Promise.create
Crea una promessa funzionalmente equivalente a una promessa JavaScript.
Sintassi
Promise.create(resolver);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
resolver |
funzione | Una funzione richiamata con due funzioni: resolve e reject. La promessa restituita verrà risolta o rifiutata quando viene richiamato il parametro corrispondente. Genera un errore se il resolver non è una funzione. |
Esempio
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
Autorizzazioni associate
Nessuno.
Testare le API
Queste API funzionano con i test JavaScript in sandbox per creare test per i modelli personalizzati in Google Tag Manager. Queste API di test non richiedono una dichiarazione require(). [Scopri di più sui test dei modelli personalizzati].
assertApi
Restituisce un oggetto matcher che può essere utilizzato per fare asserzioni in modo fluido sull'API specificata.
Sintassi
assertApi(apiName)
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
apiName |
string | Il nome dell'API da controllare; la stessa stringa passata a
require().
|
Matchers
Subject.wasCalled()Subject.wasNotCalled()Subject.wasCalledWith(...expected)Subject.wasNotCalledWith(...expected)
Esempi
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
L'API assertThat è modellata sulla libreria [Truth] di Google. Restituisce un
oggetto che può essere utilizzato per fare asserzioni in modo fluido sul valore di un soggetto. Un
errore di asserzione interromperà immediatamente il test e lo contrassegnerà come non riuscito. Tuttavia,
un errore in un test non influirà sugli altri scenari di test.
Sintassi
assertThat(actual, opt_message)
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
actual |
any | Il valore da utilizzare nei controlli di fluidità. |
opt_message |
string | Messaggio facoltativo da stampare se l'asserzione non riesce. |
Matchers
| Matcher | Descrizione |
|---|---|
isUndefined() |
Afferma che il soggetto è undefined. |
isDefined() |
Afferma che il soggetto non è undefined. |
isNull() |
Afferma che il soggetto è null. |
isNotNull() |
Afferma che il soggetto non è null. |
isFalse() |
Afferma che il soggetto è false. |
isTrue() |
Afferma che il soggetto è true. |
isFalsy() |
Afferma che il soggetto è falso. I valori falsy sono
undefined, null, false,
NaN, 0 e "" (stringa vuota). |
isTruthy() |
Afferma che il soggetto è vero. I valori falsy sono
undefined, null, false,
NaN, 0 e "" (stringa vuota). |
isNaN() |
Verifica che il soggetto sia il valore NaN. |
isNotNaN() |
Verifica che il soggetto sia un valore diverso da NaN. |
isInfinity() |
Afferma che il soggetto è infinito positivo o negativo. |
isNotInfinity() |
Afferma che il soggetto è un valore diverso da infinito positivo o negativo. |
isEqualTo(expected) |
Afferma che il soggetto è uguale al valore specificato. Si tratta di un confronto tra valori, non di un confronto di riferimento. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
isNotEqualTo(expected) |
Afferma che il soggetto non è uguale al valore specificato. Si tratta di un confronto di valori, non di un confronto di riferimenti. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
isAnyOf(...expected) |
Afferma che il soggetto è uguale a uno dei valori indicati. Si tratta di un confronto di valori, non di un confronto di riferimenti. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
isNoneOf(...expected) |
Afferma che il soggetto non è uguale a nessuno dei valori forniti. Si tratta di un confronto di valori, non di un confronto di riferimenti. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
isStrictlyEqualTo(expected) |
Afferma che il soggetto è strettamente uguale (===) al
valore specificato. |
isNotStrictlyEqualTo(expected) |
Afferma che il soggetto non è strettamente uguale (!==) al
valore specificato. |
isGreaterThan(expected) |
Afferma che il soggetto è maggiore di (>) il valore
dato in un confronto ordinato. |
isGreaterThanOrEqualTo(expected) |
Afferma che il soggetto è maggiore o uguale a
(>=) il valore specificato in un confronto ordinato. |
isLessThan(expected) |
Afferma che il soggetto è inferiore (<) al valore
dato in un confronto ordinato. |
isLessThanOrEqualTo(expected) |
Afferma che il soggetto è minore o uguale a (<=)
il valore specificato in un confronto ordinato. |
contains(...expected) |
Afferma che il soggetto è un array o una stringa che contiene tutti i valori specificati in qualsiasi ordine. Si tratta di un confronto di valori, non di un confronto di riferimenti. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
doesNotContain(...expected) |
Afferma che il soggetto è un array o una stringa che non contiene nessuno dei valori specificati. Si tratta di un confronto di valori, non di un confronto di riferimenti. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
containsExactly(...expected) |
Afferma che il soggetto è un array che contiene tutti i valori forniti in qualsiasi ordine e nessun altro valore. Si tratta di un confronto di valori, non di un confronto di riferimenti. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
doesNotContainExactly(...expected) |
Afferma che il soggetto è un array che contiene un insieme diverso di valori rispetto a quelli forniti in qualsiasi ordine. Si tratta di un confronto di valori, non di un confronto di riferimenti. I contenuti di oggetti e array vengono confrontati in modo ricorsivo. |
hasLength(expected) |
Afferma che il soggetto è un array o una stringa con la lunghezza specificata. L'asserzione ha sempre esito negativo se il valore non è un array o una stringa. |
isEmpty() |
Verifica che l'oggetto sia un array o una stringa vuota (lunghezza = 0). L'asserzione ha sempre esito negativo se il valore non è un array o una stringa. |
isNotEmpty() |
Afferma che il soggetto è un array o una stringa non vuota (lunghezza > 0). L'asserzione ha sempre esito negativo se il valore non è un array o una stringa. |
isArray() |
Afferma che il tipo di soggetto è un array. |
isBoolean() |
Afferma che il tipo del soggetto è booleano. |
isFunction() |
Afferma che il tipo di soggetto è una funzione. |
isNumber() |
Afferma che il tipo di soggetto è un numero. |
isObject() |
Afferma che il tipo del soggetto è un oggetto. |
isString() |
Afferma che il tipo di soggetto è una stringa. |
Esempi
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
Non supera immediatamente il test corrente e stampa il messaggio specificato, se fornito.
Sintassi
fail(opt_message);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
opt_message |
string | Testo del messaggio di errore facoltativo. |
Esempio
fail('This test has failed.');
mock
L'API mock ti consente di ignorare il comportamento delle API in sandbox. L'API
mock è sicura da utilizzare nel codice del modello, ma è operativa solo in modalità test.
I mock vengono reimpostati prima dell'esecuzione di ogni test.
Sintassi
mock(apiName, returnValue);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
apiName |
string | Il nome dell'API da simulare; la stessa stringa passata a
require() |
returnValue |
any | Il valore da restituire per l'API o una funzione chiamata al posto dell'API. Se returnValue è una funzione, questa viene chiamata al posto dell'API Sandbox; se returnValue è un valore diverso da una funzione, questo viene restituito al posto dell'API Sandbox. |
Esempi
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
L'API mockObject consente di sostituire il comportamento delle API isolate che restituiscono un oggetto. L'API può essere utilizzata in modo sicuro nel codice del modello, ma è operativa
solo in modalità di test. I mock vengono reimpostati prima dell'esecuzione di ogni test.
Sintassi
mockObject(apiName, objectMock);
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
apiName |
string | Il nome dell'API da simulare; la stessa stringa passata a
require() |
objectMock |
oggetto | Il valore da restituire per l'API o una funzione chiamata al posto dell'API. Deve essere un oggetto. |
Esempi
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
Esegue il codice per il modello, ovvero i contenuti della scheda Codice, nell'ambiente di test corrente con un determinato oggetto dati di input.
Sintassi
runCode(data)
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
data |
oggetto | L'oggetto dati da utilizzare nel test. |
Valore restituito
Restituisce il valore di una variabile per i modelli di variabili; restituisce undefined per
tutti gli altri tipi di modelli.
Esempio
runCode({field1: 123, field2: 'value'});