API de taggage côté serveur

Ce document décrit les API pour le taggage côté serveur.


addEventCallback

Enregistre une fonction de rappel qui sera invoquée à la fin d'un événement. Le rappel est appelé lorsque toutes les balises de l'événement ont été exécutées. Le rappel reçoit deux valeurs: l'ID du conteneur qui appelle la fonction et un objet contenant des informations sur l'événement.

Lorsque cette API est utilisée dans un tag, elle est associée à l'événement actuel. Lorsque cette API est utilisée dans un client, elle doit être liée à un événement spécifique à l'aide de la fonction bindToEvent de l'API runContainer. Pour en savoir plus, consultez cet exemple.

Syntaxe

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // Take some action based on the event data.
});

Paramètres

Paramètres Type Description
callback function Fonction à invoquer à la fin de l'événement.

L'objet eventData contient les données suivantes:

Nom de la clé Type Description
tags Array Tableau d'objets de données de tags. Chaque balise déclenchée lors de l'événement possède une entrée dans ce tableau. L'objet de données de la balise contient l'ID (id), son état d'exécution (status) et sa durée d'exécution (executionTime). Les données de la balise incluront également des métadonnées de balise supplémentaires configurées dans la balise.

Dans 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();
    }
  });
});

Dans un tag:

const addEventCallback = require('addEventCallback');

addEventCallback((containerId, eventData) => {
  // This will be called at the end of the current event.
});

Autorisations associées

read_event_metadata


callLater

Planifie un appel à une fonction pour qu'il s'exécute de manière asynchrone. La fonction sera appelée après le retour du code actuel. Cela équivaut à setTimeout(<function>, 0).

Exemple

const callLater = require('callLater');
const logToConsole = require('logToConsole');

callLater(() => {
  logToConsole('Logged asynchronously');
});

Syntaxe

callLater(function)

Paramètres

Paramètres Type Description
function function Fonction à appeler.

Autorisations associées

Aucune


claimRequest

Utilisez cette API dans un client pour revendiquer la requête. Une fois qu'une requête est revendiquée, le conteneur n'exécute plus de clients supplémentaires.

Cette API génère une exception si elle est appelée dans un tag ou une variable. Cette API génère une exception si elle est appelée après le retour du client (par exemple, dans le cas d'un rappel asynchrone tel que callLater ou la fonction onComplete runContainer).

Un client doit revendiquer la requête à l'aide de cette API avant d'appeler l'API runContainer.

Exemple

const claimRequest = require('claimRequest');

claimRequest();

Syntaxe

claimRequest();

Autorisations associées

Aucune


computeEffectiveTldPlusOne

Renvoie le domaine de premier niveau effectif + 1 (eTLD+1) du domaine ou de l'URL donnés. L'eTLD+1 est calculé en évaluant le domaine par rapport aux règles de la liste des suffixes publics. L'eTLD+1 est généralement le domaine de plus haut niveau sur lequel vous pouvez définir un cookie.

Si l'argument est nul ou indéfini, sa valeur est renvoyée sans modification. Sinon, l'argument est converti par coercition en chaîne. Si l'argument n'est pas un domaine ou une URL valide, une chaîne vide est renvoyée. Si le serveur ne parvient pas à récupérer la liste des suffixes publics, la valeur de l'argument est renvoyée telle quelle.

Exemple

const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');

// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');

Syntaxe

computeEffectiveTldPlusOne(domainOrUrl);

Paramètres

Paramètres Type Description
domainOrUrl chaîne Domaine ou URL sur lequel calculer l'eTLD+1.

Autorisations associées

Aucune


createRegex

Crée une instance d'expression régulière et la renvoie encapsulée dans un objet. Vous ne pouvez pas accéder directement à l'expression régulière. Toutefois, vous pouvez le transmettre à l'API testRegex, String.replace(), String.match() et String.search().

Renvoie null si l'expression régulière n'est pas valide ou si la valeur Re2 n'est pas disponible sur le serveur.

Cette API utilise une implémentation Re2. L'image Docker du serveur doit utiliser la version 2.0.0 ou une version ultérieure.

Exemple

const createRegex = require('createRegex');

const domainRegex = createRegex('\\w+\\.com', 'i');

// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');

Syntaxe

createRegex(pattern, flags);

Paramètres

Paramètres Type Description
pattern chaîne Texte de l'expression régulière.
flags chaîne Chaîne facultative contenant les options de l'expression régulière en cours de création. Les paramètres "g" (global) et "i" (ignorer la casse) sont pris en charge. Tous les autres caractères sont ignorés sans notification.

Autorisations associées

Aucune

Version minimale de l'image

2.0.0


decodeUri

Décode tous les caractères encodés dans l'URI fourni. Renvoie une chaîne qui représente l'URI décodé. Renvoie undefined lorsque l'entrée n'est pas valide.

Exemple

const decodeUri = require('decodeUri');

const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
  // ...
}

Syntaxe

decodeUri(encoded_uri);

Paramètres

Paramètres Type Description
encoded_uri chaîne URI ayant été encodé par encodeUri() ou par d'autres moyens.

Autorisations associées

Aucune


decodeUriComponent

Décode tous les caractères encodés dans le composant URI fourni. Renvoie une chaîne qui représente le composant d'URI décodé. Renvoie undefined en cas d'entrée non valide.

Exemple

const decodeUriComponent = require('decodeUriComponent');

const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
  // ...
}

Syntaxe

decodeUriComponent(encoded_uri_component);

Paramètres

Paramètres Type Description
encoded_uri_component chaîne Composant URI qui a été encodé par encodeUriComponent() ou par d'autres moyens.

Autorisations associées

Aucune


encodeUri

Renvoie un URI (Uniform Resource Identifier) encodé en échappant les caractères spéciaux. Renvoie une chaîne qui représente la chaîne fournie encodée en tant qu'URI.

Exemple

const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/' + encodeUri(pathInput));

Syntaxe

encodeUri(uri);

Paramètres

Paramètres Type Description
uri chaîne URI complet.

Autorisations associées

Aucune


encodeUriComponent

Renvoie un URI (Uniform Resource Identifier) encodé en échappant les caractères spéciaux. Renvoie une chaîne qui représente la chaîne fournie encodée en tant qu'URI.

Exemple

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));

Syntaxe

encodeUriComponent(str);

Paramètres

Paramètres Type Description
str chaîne Composant d'un URI.

Autorisations associées

Aucune


extractEventsFromMpv1

Traduit une requête du protocole de mesure V1 entrante en une liste d'événements au format Unified Schema. Renvoie la liste des événements extraits. La fonction renvoie une erreur si le format de la requête n'est pas correct.

Exemple

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.
  }
}

Syntaxe

extractEventsFromMpv1();

Autorisations associées

Nécessite l'autorisation read_request. L'autorisation doit être configurée de manière à accorder au moins l'accès à:

  • body
  • query parameters

extractEventsFromMpv2

Traduit une requête du protocole de mesure V2 entrante en une liste d'événements au format Unified Schema. Renvoie la liste des événements extraits. La fonction renvoie une erreur si le format de la requête n'est pas correct.

Exemple

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.
  }
}

Syntaxe

extractEventsFromMpv2();

Autorisations associées

Nécessite l'autorisation read_request. L'autorisation doit être configurée de manière à accorder au moins l'accès à:

  • body
  • query parameters

fromBase64

Décode une chaîne encodée en base64. Renvoie undefined si l'entrée n'est pas valide.

Syntaxe

fromBase64(base64EncodedString);

Paramètres

Paramètres Type Description
base64EncodedString chaîne Chaîne encodée en base64.

Exemple

const fromBase64 = require('fromBase64');

const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
  // ...
}

Autorisations associées

Aucune


generateRandom

Renvoie un nombre (entier) aléatoire compris dans la plage donnée.

Exemple

const generateRandom = require('generateRandom');

const randomValue = generateRandom(0, 10000000);

Syntaxe

generateRandom(min, max);

Paramètres

Paramètres Type Description
min nombre Valeur potentielle minimale de l'entier renvoyé (inclus).
max nombre Valeur potentielle maximale de l'entier renvoyé (inclus).

Autorisations associées

Aucune


getAllEventData

Renvoie une copie des données d'événement.

Syntaxe

getAllEventData();

Autorisations associées

read_event_data


getClientName

Renvoie une chaîne contenant le nom du client actuel.

Syntaxe

getClientName();

Autorisations associées

read_container_data


getContainerVersion

Renvoie un objet contenant des données sur le conteneur actuel. L'objet renvoyé contiendra les champs suivants:

{
  containerId: string,
  debugMode: boolean,
  environmentName: string,
  environmentMode: boolean,
  previewMode: boolean,
  version: string,
}

Exemple

const getContainerVersion = require('getContainerVersion');

const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];

Syntaxe

getContainerVersion();

Autorisations associées

read_container_data


getCookieValues

Renvoie un tableau contenant les valeurs de tous les cookies portant le nom donné.

Exemple

const getCookieValues = require('getCookieValues');

const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
  // ...
}

Syntaxe

getCookieValues(name[, noDecode]);

Paramètres

Paramètres Type Description
name chaîne Nom du cookie.
noDecode boolean Si la valeur est true, les valeurs du cookie ne seront pas décodées avant d'être renvoyées. La valeur par défaut est false.

Autorisations associées

get_cookies


getEventData

Renvoie une copie de la valeur au chemin d'accès indiqué dans les données d'événement. Renvoie undefined s'il n'y a pas de données d'événement ou s'il n'y a pas de valeur au chemin d'accès donné.

Exemple

const getEventData = require('getEventData');

const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');

Paramètres

Paramètres Type Description
keyPath tous Chemin d'accès à la clé, où les composants du chemin sont séparés par des points. Les composants de chemin peuvent être des clés d'un objet ou des index dans un tableau. Si keyPath n'est pas une chaîne, il est converti en chaîne.

Syntaxe

getEventData(keyPath);

Autorisations associées

read_event_data


getGoogleAuth

Renvoie un objet d'autorisation qui, lorsqu'il est utilisé avec sendHttpGet ou sendHttpRequest, inclut un en-tête d'autorisation pour les API Google Cloud. Cette API utilise les identifiants par défaut de l'application pour rechercher automatiquement les identifiants dans l'environnement du serveur.

Exemple

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();
  }
});

Syntaxe

getGoogleAuth(scopes);

Paramètres

Paramètres Type Description
scopes Array Tableau des champs d'application des API Google OAuth 2.0 auxquels demander l'accès.

Autorisations associées

Nécessite l'autorisation use_google_credentials. L'autorisation doit être configurée avec un ou plusieurs champs d'application autorisés.


getGoogleScript

Récupère une ressource à partir d'un ensemble prédéterminé de scripts Google, puis renvoie une promesse avec le script et les métadonnées de mise en cache associées.

La promesse est résolue en un objet contenant deux clés: script et metadata. Si la requête échoue, la promesse est refusée avec une clé reason.

L'objet metadata contient les métadonnées de mise en cache suivantes en fonction des en-têtes de réponse de la ressource. Chaque champ n'est présent que si l'en-tête correspondant est présent dans la réponse de la ressource.

{
  'cache-control': string,
  'expires': string,
  'last-modified': string,
}

Exemple

const getGoogleScript = require('getGoogleScript');

getGoogleScript('ANALYTICS').then((result) => {
  // Operate on result.script and result.metadata here.
});

Syntaxe

getGoogleScript(script[, options]);

Paramètres

Paramètres Type Description
script chaîne Nom du script. Les scripts acceptés sont 'ANALYTICS', 'GTAG' et 'GTM'.

L'option 'ANALYTICS' récupère le script Google Analytics à partir de https://www.google-analytics.com/analytics.js.

L'option 'GTAG' récupère le script global site tag (gtag.js) à partir de https://www.googletagmanager.com/gtag/js.

L'option 'GTM' récupère le script Google Tag Manager à partir de https://www.googletagmanager.com/gtm.js.
options objet Options de requête facultatives. Vous trouverez ci-dessous la liste des options compatibles.

Options

Option Type Description
id chaîne Applicable à 'GTAG' avec l'ID de mesure gtag et à 'GTM' avec l'ID du conteneur Web (par exemple, GTM-XXXX).
debug tous S'il est vrai, demande et renvoie la version de débogage du script de mesure.
timeout nombre Délai avant expiration de la requête en millisecondes. Les valeurs non positives sont ignorées. Si la requête expire, le rappel est appelé avec undefined pour la valeur de script et {} pour l'objet de métadonnées.

Les clés d'option non reconnues sont ignorées.

Autorisations associées

Nécessite l'autorisation send_http. L'autorisation doit être configurée pour autoriser l'accès au minimum aux éléments suivants:

  • Autoriser les domaines Google

getRemoteAddress

Renvoie une représentation sous forme de chaîne de l'adresse IP d'origine de la requête, par exemple 12.345.67.890 pour IPv4 ou 2001:0db8:85a3:0:0:8a2e:0370:7334 pour IPv6, en lisant les en-têtes de requête tels que Forwarded et X-Forwarded-For. Remarque: Cette API tente au mieux de découvrir l'adresse IP d'origine, mais elle ne peut pas garantir l'exactitude du résultat.

Syntaxe

getRemoteAddress();

Autorisations associées

Nécessite l'autorisation read_request. L'autorisation doit être configurée de manière à accorder au moins l'accès à:

  • En-têtes Forwarded et X-Forwarded-For
  • Adresse IP distante

getRequestBody

Renvoie le corps de la requête sous forme de chaîne, le cas échéant, ou undefined dans le cas contraire.

Syntaxe

getRequestBody();

Autorisations associées

read_request


getRequestHeader

Renvoie la valeur de l'en-tête de requête nommé sous forme de chaîne, si elle est présente, ou undefined dans le cas contraire. Si l'en-tête est répété, les valeurs renvoyées sont jointes avec ', '.

Exemple

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

Syntaxe

getRequestHeader(headerName);

Paramètres

Paramètres Type Description
headerName chaîne Nom de l'en-tête. Cette valeur n'est pas sensible à la casse.

Autorisations associées

read_request


getRequestMethod

Renvoie la méthode de requête, par exemple 'GET' ou 'POST', sous forme de chaîne.

Exemple

const getRequestMethod = require('getRequestMethod');

if (getRequestMethod() === 'POST') {
  // Handle the POST request here.
}

Syntaxe

getRequestMethod();

Autorisations associées

Aucune


getRequestPath

Renvoie le chemin de la requête sans la chaîne de requête. Par exemple, si l'URL est '/foo?id=123', la fonction renvoie '/foo'. Supprime automatiquement le préfixe d'URL du conteneur serveur du chemin. Par exemple, si l'URL du conteneur de serveur est https://example.com/analytics et que le chemin de la requête est '/analytics/foo', la fonction renvoie '/foo'.

Exemple

const getRequestPath = require('getRequestPath');

const requestPath = getRequestPath();
if (requestPath === '/') {
  // Handle a request for the root path.
}

Syntaxe

getRequestPath();

Autorisations associées

read_request


getRequestQueryParameter

Renvoie la valeur décodée du paramètre de chaîne de requête nommé sous forme de chaîne ou undefined si le paramètre n'est pas présent. Si le paramètre est répété dans la chaîne de requête, la première valeur qui apparaît dans la chaîne de requête est renvoyée.

Exemple

const getRequestQueryParameter = require('getRequestQueryParameter');

const query = getRequestQueryParameter('query');
if (query) {
  // Process query here.
}

Syntaxe

getRequestQueryParameter(name);

Paramètres

Paramètres Type Description
name chaîne Nom du paramètre de requête.

Autorisations associées

read_request


getRequestQueryParameters

Renvoie les paramètres de requête de la requête HTTP entrante sous la forme d'un objet mappant les noms de paramètres de requête à la ou aux valeurs correspondantes. Les noms et les valeurs des paramètres sont décodés.

Exemple

const getRequestQueryParameters = require('getRequestQueryParameters');

const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
  // Handle the search query here.
  const maxResults = queryParameters['max_results'];
}

Syntaxe

getRequestQueryParameters();

Autorisations associées

read_request


getRequestQueryString

Renvoie la requête de requête sous forme de chaîne, sans le point d'interrogation au début, ou une chaîne vide si l'URL de la requête n'inclut pas de chaîne de requête.

Exemple

const getRequestQueryString = require('getRequestQueryString');

const queryString = getRequestQueryString();
if (queryString !== '') {
  // Handle the query string.
}

Syntaxe

getRequestQueryString();

Autorisations associées

read_request


getTimestamp

Obsolète. Optez pour getTimestampMillis.

Renvoie un number représentant l'heure actuelle en millisecondes depuis l'epoch Unix, telle que renvoyée par Date.now().

Syntaxe

getTimestamp();

Autorisations associées

Aucune


getTimestampMillis

Renvoie un number représentant l'heure actuelle en millisecondes depuis l'epoch Unix, telle que renvoyée par Date.now().

Syntaxe

getTimestampMillis();

Autorisations associées

Aucune


getType

Renvoie une chaîne décrivant le type de la valeur donnée.

Type d'entrée Valeur renvoyée
chaîne 'string'
nombre 'number'
boolean 'boolean'
nul 'null'
non défini 'undefined'
Array 'array'
Objet 'object'
Fonction 'function'

Exemple

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);
}

Syntaxe

getType(value);

Paramètres

Paramètres Type Description
value tous Valeur d'entrée.

Autorisations associées

Aucune


hmacSha256

Calcule une signature encodée à l'aide du code HMAC (Hash-based Message Authentication Code) avec SHA-256. Par défaut, l'encodage base64url est utilisé.

Pour utiliser cette API, définissez la variable d'environnement SGTM_CREDENTIALS sur le serveur sur le chemin d'un fichier de clé JSON encodé au format UTF-8 au format suivant:

{
  "key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
  "key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
  ...
}

Les valeurs sont des clés HMAC encodées en base64.

Exemple

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;

Syntaxe

hmacSha256(data, keyId, options)

Paramètres

Paramètres Type Description
data chaîne Données pour calculer la valeur HMAC.
keyId chaîne ID de clé issu du fichier de clé JSON faisant référence à la clé à utiliser.
options objet Configuration d'API facultative. (voir la section Options ci-dessous).

Options

Option Type Description
outputEncoding chaîne Spécifie le format d'encodage de la valeur renvoyée. Les formats acceptés sont hex, base64 et base64url. Si aucune valeur n'est spécifiée, la valeur par défaut est base64url.

Autorisations associées

use_custom_private_keys

Version minimale de l'image

1.0.0


isRequestMpv1

Renvoie true si la requête entrante est une requête du protocole de mesure V1, ou false dans le cas contraire.

Exemple

const isRequestMpv1 = require('isRequestMpv1');

if (isRequestMpv1()) {
  // Handle Measurement Protocol V1 request.
  const events = extractEventsFromMpv1();
}

Syntaxe

isRequestMpv1();

Autorisations associées

Aucune


isRequestMpv2

Renvoie true si la requête entrante est une requête du protocole de mesure V2, ou false dans le cas contraire.

Exemple

const isRequestMpv2 = require('isRequestMpv2');

if (isRequestMpv2()) {
  // Handle Measurement Protocol V2 request.
  const events = extractEventsFromMpv2();
}

Syntaxe

isRequestMpv2();

Autorisations associées

Aucune


logToConsole

Consigne son ou ses arguments dans la console.

Ces journaux sont visibles dans l'explorateur de journaux de la console Google Cloud. Dans l'explorateur de journaux, exécutez la requête logName =~ "stdout" pour afficher les entrées de journal créées par cette API.

Exemple

const logToConsole = require('logToConsole');

const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);

Syntaxe

logToConsole(argument1[, argument2, ...]);

Paramètres

L'API utilise un ou plusieurs arguments, chacun d'eux étant converti en chaîne, si nécessaire, et journalisé dans la console.

Autorisations associées

logging


makeInteger

Convertit la valeur donnée en nombre (entier).

Syntaxe

makeInteger(value);

Paramètres

Paramètres Type Description
value tout type Valeur à convertir.

Autorisations associées

Aucune


makeNumber

Convertit la valeur donnée en nombre.

Syntaxe

makeNumber(value);

Paramètres

Paramètres Type Description
value tout type Valeur à convertir.

Autorisations associées

Aucune


makeString

Renvoie la valeur donnée sous forme de chaîne.

Syntaxe

makeString(value);

Paramètres

Paramètres Type Description
value tout type Valeur à convertir.

Autorisations associées

Aucune


makeTableMap

Convertit un objet de table simple comportant deux colonnes en Map. Cela permet de modifier un champ de modèle SIMPLE_TABLE comportant deux colonnes en un format plus facile à gérer.

Par exemple, cette fonction peut convertir un objet de table:

[
  {'key': 'k1', 'value': 'v1'},
  {'key': 'k2', 'value': 'v2'}
]

dans une carte:

{
  'k1': 'v1',
  'k2': 'v2'
}

Renvoie un objet: la valeur Map convertie des paires clé-valeur y a été ajoutée, ou null dans le cas contraire.

Syntaxe

makeTableMap(tableObj, keyColumnName, valueColumnName);

Paramètres

Paramètres Type Description
tableObj Liste Objet table à convertir. Il s'agit d'une liste de cartes où chaque Map représente une ligne de la table. Chaque nom de propriété dans un objet "row" correspond au nom de la colonne, et la valeur de la propriété à la valeur de la colonne dans la ligne.
keyColumnName chaîne Nom de la colonne dont les valeurs deviendront des clés dans le Map converti.
valueColumnName chaîne Nom de la colonne dont les valeurs deviendront des valeurs dans le Map converti.

Autorisations associées

Aucune


parseUrl

Renvoie un objet contenant toutes les parties d'une URL donnée, semblable à l'objet URL.

Cette API renvoie undefined pour toutes les URL dont le format est incorrect. Pour les URL correctement formatées, les champs non présents dans la chaîne d'URL auront pour valeur une chaîne vide ou, dans le cas de searchParams, un objet vide.

L'objet renvoyé comporte les champs suivants:

{
  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,
}

Exemple

const parseUrl = require('parseUrl');

const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');

Syntaxe

parseUrl(url);

Paramètres

Paramètres Type Description
url chaîne URL complète qui sera analysée.

Autorisations associées

Aucune


returnResponse

Vide la réponse précédemment définie par d'autres modèles à l'aide des API qui modifient la réponse, y compris setCookie, setPixelResponse, setResponseBody, setResponseHeader et setResponseStatus. La valeur par défaut est un code d'état HTTP 200, un corps vide et aucun en-tête.

Il est recommandé d'utiliser cette API à partir d'un modèle client.

Syntaxe

returnResponse();

Exemple

Consultez l'exemple runContainer.

Autorisations associées

return_response


runContainer

Exécute la logique de conteneur (variables, déclencheurs, balises) dans le champ d'application d'un événement. Si cette API est appelée lors de l'exécution du conteneur, le conteneur est de nouveau exécuté.

Les rappels onComplete et onStart reçoivent une fonction appelée bindToEvent. Utilisez bindToEvent pour exécuter une API dans le contexte de l'événement. Pour en savoir plus, consultez l'exemple addEventCallback.

Il est recommandé d'utiliser cette API à partir d'un modèle 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());

Syntaxe

runContainer(event, onComplete, onStart);

Paramètres

Paramètres Type Description
event objet Paramètres de l'événement.
onComplete function Rappel invoqué une fois le déclenchement de toutes les balises terminé.
onStart function Un rappel qui est invoqué immédiatement avant le déclenchement des balises

Autorisations associées

run_container


sendEventToGoogleAnalytics

Envoie un seul événement à l'aide de données d'événement communes à Google Analytics et renvoie une promesse qui renvoie à un objet avec une clé location ou refuse un objet avec une clé reason. La destination, Universal Analytics ou Google Analytics 4, est basée sur l'ID de mesure dans les données d'événement.

Le champ location est défini sur l'en-tête location, s'il est présent.

Exemple

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();
});

Syntaxe

sendEventToGoogleAnalytics(event);

Paramètres

Paramètres Type Description
event objet L'événement au format Unified Schema.

Autorisations associées

Nécessite l'autorisation send_http. L'autorisation doit être configurée pour autoriser l'accès au minimum aux éléments suivants:

  • Autoriser les domaines Google

sendHttpGet

Envoie une requête HTTP GET à l'URL spécifiée et renvoie une promesse qui se résout avec le résultat une fois la requête terminée ou expirée.

Le résultat résolu est un objet contenant trois clés: statusCode, headers et body. Si la requête a échoué (par exemple, URL non valide, aucun routage vers l'hôte, échec de la négociation SSL, etc.), la promesse est refusée avec l'erreur suivante: {reason: 'failed'}. Si l'option timeout a été définie et que la requête a expiré, la promesse rejette l'appel avec le message suivant: {reason: 'timed_out'}

Exemple

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);

Syntaxe

sendHttpGet(url[, options]);

Paramètres

Paramètres Type Description
url chaîne URL demandée.
options objet Options de requête facultatives. (voir la section Options ci-dessous).

Options

Option Type Description
headers chaîne En-têtes de requête supplémentaires.
timeout nombre Délai avant expiration, en millisecondes, avant l'annulation de la requête. La valeur par défaut est 15000.
authorization objet Objet d'autorisation facultatif de l'appel à getGoogleAuth pour inclure les en-têtes d'autorisation lors de l'envoi de requêtes à googleapis.com.

Autorisations associées

send_http


sendHttpRequest

Envoie une requête HTTP à l'URL spécifiée et renvoie une promesse qui se résout avec la réponse une fois la requête terminée ou expirée.

Le résultat résolu est un objet contenant trois clés: statusCode, headers et body. Si la requête a échoué (par exemple, URL non valide, aucun routage vers l'hôte, échec de la négociation SSL, etc.), la promesse est refusée avec l'erreur suivante: {reason: 'failed'}. Si l'option timeout a été définie et que la requête a expiré, la promesse rejette l'appel avec le message suivant: {reason: 'timed_out'}

Exemple

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']);
});

Syntaxe

sendHttpRequest(url[, options[, body]]);

Paramètres

Paramètres Type Description
url chaîne URL demandée.
options objet Options de requête facultatives. (voir la section Options ci-dessous).
body chaîne Corps de la requête facultatif.

Options

Option Type Description
headers chaîne En-têtes de requête supplémentaires.
method objet Méthode de la requête. La valeur par défaut est GET.
timeout nombre Délai avant expiration, en millisecondes, avant l'annulation de la requête. La valeur par défaut est 15000.
authorization objet Objet d'autorisation facultatif de l'appel à getGoogleAuth pour inclure les en-têtes d'autorisation lors de l'envoi de requêtes à googleapis.com.

Autorisations associées

send_http


sendPixelFromBrowser

Envoie une commande au navigateur pour charger l'URL fournie en tant que tag <img>. Ce protocole de commande est compatible avec la balise Google pour les balises Web GA4 et Google Analytics: Événement GA. Vous devez configurer l'URL du conteneur serveur. Pour en savoir plus, consultez les instructions.

Cette API renvoie false si la requête entrante n'est pas compatible avec le protocole de commande ou si la réponse a déjà été vidée. Sinon, cette API renvoie true.

Exemple :

const sendPixelFromBrowser = require('sendPixelFromBrowser');

sendPixelFromBrowser('https://example.com/?id=123');

Syntaxe

sendPixelFromBrowser(url)

Paramètres

Paramètres Type Description
url chaîne URL à envoyer au navigateur.

Autorisations associées

send_pixel_from_browser


setCookie

Définit ou supprime un cookie selon les options spécifiées.

Pour supprimer un cookie, vous devez définir un cookie avec le même chemin d'accès et le même domaine que ceux avec lesquels il a été créé, et lui attribuer une valeur d'expiration passée, par exemple "Thu, 01 Jan 1970 00:00:00 GMT".

Notez que returnResponse doit être appelé pour que la réponse soit renvoyée au client.

Exemple

const setCookie = require('setCookie');

// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});

Syntaxe

setCookie(name, value[, options[, noEncode]]);

Paramètres

Paramètres Type Description
name chaîne Nom du cookie. Le nom n'est pas sensible à la casse.
value chaîne Valeur du cookie.
options objet Attributs de cookie facultatifs:domain, expires, fallbackDomain, httpOnly, max- age, path, secure et sameSite. (voir la section Options ci-dessous).
noEncode boolean Si la valeur est "true", la valeur du cookie ne sera pas encodée. La valeur par défaut est false.

Options

  • domain:hôte auquel le cookie sera envoyé. S'il est défini sur la valeur spéciale "auto", l'hôte est automatiquement calculé à l'aide de la stratégie suivante:

    • eTLD+1 de l'en-tête Forwarded, le cas échéant.
    • eTLD+1 de l'en-tête X-Forwarded-Host, le cas échéant.
    • eTLD+1 de l'en-tête Host.
  • expires: durée de vie maximale du cookie. Il doit s'agir d'une chaîne de date au format UTC, par exemple "Sam, 26 Oct 1985 08:21:00 GMT". Si expires et max-age sont tous deux définis, max-age est prioritaire.

  • httpOnly: empêche JavaScript d'accéder au cookie si la valeur est true.

  • max-age: nombre de secondes avant l'expiration du cookie. Si un nombre nul ou négatif fait expirer le cookie immédiatement, Si expires et max-age sont tous deux définis, max-age est prioritaire.

  • path: chemin d'accès qui doit exister dans l'URL demandée, sans quoi le navigateur n'enverra pas l'en-tête de cookie.

  • secure (sécurisé) : si la valeur est true, le cookie n'est envoyé au serveur que lorsqu'une requête est effectuée à partir d'un point de terminaison https:.

  • sameSite: affirme qu'un cookie ne doit pas être envoyé avec des requêtes multi-origines. Doit être 'strict', 'lax' ou 'none'.

Autorisations associées

set_cookie


setPixelResponse

Définit le corps de la réponse sur un GIF 1x1, définit l'en-tête Content-Type sur "image/gif", définit les en-têtes de mise en cache de sorte que les user-agents ne mettent pas en cache la réponse et définit l'état de la réponse sur 200.

Notez que returnResponse doit être appelé pour que la réponse soit renvoyée au client.

Syntaxe

setPixelResponse();

Autorisations associées

Nécessite l'autorisation access_response. L'autorisation doit être configurée de manière à accorder au moins l'accès à:

  • headers : les clés suivantes doivent être autorisées.
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

Définit le corps de la réponse sur l'argument.

Notez que returnResponse doit être appelé pour que la réponse soit renvoyée au client.

Syntaxe

setResponseBody(body[, encoding]);

Paramètres

Paramètres Type Description
body chaîne Valeur à définir comme corps de la réponse.
encoding chaîne Encodage des caractères dans le corps de la réponse (par défaut, 'utf8'). Les valeurs acceptées sont 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary' et 'hex'.

Autorisations associées

Nécessite l'autorisation access_response. L'autorisation doit être configurée de manière à accorder au moins l'accès à:

  • body

setResponseHeader

Définit un en-tête dans la réponse à renvoyer. Si un en-tête portant ce nom (non sensible à la casse) a déjà été défini par cette API, ce dernier appel écrasera ou effacera la valeur définie par l'appelant précédent.

Notez que returnResponse doit être appelé pour que la réponse soit renvoyée au client.

Syntaxe

setResponseHeader(name, value);

Paramètres

Paramètres Type Description
name chaîne Nom de l'en-tête. Les noms d'en-tête HTTP ne sont pas sensibles à la casse. Ils sont donc mis en minuscules.
value chaîne non définie Valeur de l'en-tête. Si la valeur est nulle ou non définie, l'en-tête nommé est effacé de la réponse qui sera renvoyée.

Autorisations associées

Nécessite l'autorisation access_response. L'autorisation doit être configurée de manière à accorder au moins l'accès à:

  • headers

setResponseStatus

Définit le code d'état HTTP de la réponse qui sera renvoyée.

Notez que returnResponse doit être appelé pour que la réponse soit renvoyée au client.

Syntaxe

setResponseStatus(statusCode);

Paramètres

Paramètres Type Description
statusCode nombre Code d'état HTTP à renvoyer.

Autorisations associées

Nécessite l'autorisation access_response. L'autorisation doit être configurée de manière à accorder au moins l'accès à:

  • status

sha256

Calcule le condensé SHA-256 de l'entrée et appelle un rappel avec le condensé encodé en base64, sauf si l'objet options spécifie un encodage de sortie différent.

Cette signature et ce comportement d'API correspondent à ceux de l'API sha256 pour les conteneurs Web. Toutefois, les modèles personnalisés dans les conteneurs serveur doivent utiliser l'API sha256Sync pour simplifier le code.

Exemple

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'});

Syntaxe

sha256(input, onSuccess, options = undefined);

Paramètres

Paramètres Type Description
input chaîne Chaîne à hacher.
onSuccess function Appelé avec le condensé obtenu, encodé en base64, sauf si l'objet options spécifie un encodage de sortie différent.
options objet Facultatif. Objet d'options permettant de spécifier l'encodage de sortie. S'il est spécifié, l'objet doit contenir la clé outputEncoding, dont la valeur est base64 ou hex.

Autorisations associées

Aucune


sha256Sync

Calcule et renvoie le condensé SHA-256 de l'entrée, encodé en base64, sauf si l'objet options spécifie un encodage de sortie différent.

Exemple

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));

Syntaxe

sha256Sync(input, options = undefined);

Paramètres

Paramètres Type Description
input chaîne Chaîne à hacher.
options objet Facultatif. Objet d'options permettant de spécifier l'encodage de sortie. S'il est spécifié, l'objet doit contenir la clé outputEncoding, dont la valeur est base64 ou hex.

Autorisations associées

Aucune


templateDataStorage

Renvoie un objet avec des méthodes permettant d'accéder au stockage des données des modèles. Le stockage de données d'un modèle permet de partager des données entre les exécutions d'un même modèle. Les données stockées dans l'espace de stockage des modèles sont conservées sur le serveur qui exécute le conteneur. Dans la plupart des cas, plusieurs serveurs exécutent le conteneur. Par conséquent, le stockage de données dans le stockage de modèle ne garantit pas que chaque requête ultérieure aura accès aux données.

Le terme "data" dans le nom "templateDataStorage" fait référence au fait que seuls les types de données bruts qui ne sont pas fonctionnels peuvent être stockés à l'aide de cette API. Toutes les fonctions ou références aux fonctions transmises à l'API seront stockées sous forme de null.

Syntaxe

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();

Exemple

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);
});

Autorisations associées

access_template_storage


testRegex

Teste une chaîne par rapport à une expression régulière créée via l'API createRegex. Renvoie true si l'expression régulière correspond. Renvoie false dans les autres cas.

Une expression régulière créée avec l'option globale est avec état. Pour en savoir plus, consultez la documentation sur RegExp.

Exemple

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');

Syntaxe

testRegex(regex, string);

Paramètres

Paramètres Type Description
regex Objet Expression régulière à tester, renvoyée par l'API createRegex.
string chaîne Chaîne de test à tester.

Autorisations associées

Aucune


toBase64

Encode une chaîne au format base64 ou base64url. Par défaut, l'encodage base64 est utilisé.

Syntaxe

toBase64(input, options);

Paramètres

Paramètres Type Description
input chaîne Chaîne à encoder.
options objet Configuration d'API facultative. (voir la section Options ci-dessous).

Options

Option Type Description Version minimale
urlEncoding boolean Si la valeur est "true", le résultat est encodé au format base64url. 1.0.0

Exemple

const toBase64 = require('toBase64');

const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});

Autorisations associées

Aucune


BigQuery

Renvoie un objet qui fournit des fonctions BigQuery.

La fonction BigQuery.insert permet d'écrire des données dans une table BigQuery. Il renvoie une promesse qui se résout en cas d'insertion réussie ou qui est refusée en cas d'erreur.

Lorsque l'insertion aboutit, la promesse est résolue sans argument.

Lorsque l'insertion échoue, la promesse refuse avec une liste d'objets contenant le motif de l'erreur et éventuellement un objet de ligne si une erreur se produit. Il est possible qu'une partie de la requête soit traitée, mais pas d'autres. Dans ce cas, la promesse est rejetée avec une liste d'erreurs pour chaque ligne avec un objet de ligne, ce qui permet de distinguer les lignes insérées (voir les exemples d'erreurs ci-dessous). Pour en savoir plus, consultez la documentation de BigQuery sur les messages d'erreur.

Syntaxe

BigQuery.insert(connectionInfo, rows[, options]);

Paramètres Type Description
connectionInfo objet Définit les informations requises pour se connecter à une table BigQuery. Il existe un paramètre facultatif et deux paramètres obligatoires :
  • projectId : ID du projet Google Cloud Platform facultatif. En cas d'omission, projectId est récupéré à partir de la variable d'environnement GOOGLE_CLOUD_PROJECT tant que le paramètre d'autorisation access_bigquery pour l'ID de projet est défini sur * ou GOOGLE_CLOUD_PROJECT. Si le conteneur serveur est en cours d'exécution sur Google Cloud, GOOGLE_CLOUD_PROJECT sera déjà défini sur l'ID du projet Google Cloud.
  • datasetId : ID de l'ensemble de données BigQuery.
  • tableId : ID de la table BigQuery.
rows Array Lignes à insérer dans la table.
options objet Options de requête facultatives. Les options acceptées sont les suivantes : ignoreUnknownValues et skipInvalidRows. Les clés d'option inconnues sont ignorées. (voir la section Options ci-dessous).

Options

Paramètres Type Description
ignoreUnknownValues boolean Si la valeur est true, acceptez les lignes contenant des valeurs qui ne correspondent pas au schéma. Les valeurs inconnues sont ignorées. La valeur par défaut est false.
skipInvalidRows boolean Si la valeur est true, insérer toutes les lignes valides d'une requête, même s'il existe des lignes non valides. La valeur par défaut est false.

Exemples d'erreurs

Une erreur "Module introuvable" signifie que votre conteneur serveur exécute probablement une ancienne version de notre image qui n'incluait pas encore le module BigQuery. Veuillez redéployer votre conteneur serveur avec les mêmes paramètres à l'aide de notre script de déploiement. Le module sera automatiquement inclus une fois l'opération terminée.

Une erreur de non-insertion comporte généralement un objet d'erreur avec une clé reason:

[{reason: 'invalid'}]

Une erreur d'insertion peut contenir plusieurs objets d'erreur avec un tableau errors et un objet row. Voici un exemple de réponse d'erreur générée par l'insertion de deux lignes dont une seule comporte une erreur:

[
  {
    "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
    }
  }
]

Exemple

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);

Autorisations associées

access_bigquery


Firestore

Renvoie un objet qui fournit des fonctions Firestore.

Cette API n'est compatible qu'avec Firestore en mode natif, et non avec Firestore en mode Datastore. De plus, l'API ne permet d'utiliser que la base de données par défaut.

Firestore.read

La fonction Firestore.read lit les données d'un document Firestore et renvoie une promesse qui se résout en un objet contenant deux clés : id et data. Si le document n'existe pas, la promesse rejette avec un objet contenant une clé reason égale à not_found.

Syntaxe

Firestore.read(path[, options]);

Paramètres Type Description
path chaîne Chemin d'accès au document ou à la collection. Il ne doit pas commencer ni se terminer par "/".
options objet Options de requête facultatives. Les options compatibles sont : projectId, disableCache et transaction. Les clés d'option inconnues sont ignorées. (voir la section Options ci-dessous).

Options

Paramètres Type Description
projectId chaîne Facultatif. ID du projet Google Cloud Platform. En cas d'omission, projectId est récupéré à partir de la variable d'environnement GOOGLE_CLOUD_PROJECT tant que le paramètre d'autorisation access_firestore pour l'ID de projet est défini sur * ou GOOGLE_CLOUD_PROJECT. Si le conteneur serveur est en cours d'exécution sur Google Cloud, GOOGLE_CLOUD_PROJECT sera déjà défini sur l'ID du projet Google Cloud.
disableCache boolean Facultatif. Détermine si le cache doit être désactivé ou non. La mise en cache est activée par défaut. Les résultats sont mis en cache pendant toute la durée de la requête.
transaction chaîne Facultatif. Valeur extraite de Firestore.runTransaction(). Marque l'opération à utiliser dans une transaction.

Exemple

const Firestore = require('Firestore');

return Firestore.read('collection/document', {
  projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);

Firestore.write

La fonction Firestore.write écrit les données dans un document ou une collection Firestore. Si le chemin d'accès est celui d'une collection, un document sera créé avec un ID généré de manière aléatoire. Si le chemin d'accès est celui d'un document et qu'il n'existe pas, il sera créé. Cette API renvoie une promesse qui renvoie vers l'ID du document ajouté ou modifié. Si l'option de transaction est utilisée, l'API renvoie quand même une promesse, mais ne contient pas l'ID, car les écritures sont regroupées.

Syntaxe

Firestore.write(path, input[, options]);

Paramètres

Paramètres Type Description
path chaîne Chemin d'accès au document ou à la collection. Il ne doit pas commencer ni se terminer par "/".
input objet Valeur à écrire dans le document. Si l'option de fusion est définie, l'API fusionne les clés de l'entrée dans le document.
options objet Options de requête facultatives. Les options compatibles sont les suivantes : projectId, merge et transaction. Les clés d'option inconnues sont ignorées. (voir la section Options ci-dessous).

Options

Paramètres Type Description
projectId chaîne Facultatif. ID du projet Google Cloud Platform. En cas d'omission, projectId est récupéré à partir de la variable d'environnement GOOGLE_CLOUD_PROJECT tant que le paramètre d'autorisation access_firestore pour l'ID de projet est défini sur * ou GOOGLE_CLOUD_PROJECT. Si le conteneur serveur est en cours d'exécution sur Google Cloud, GOOGLE_CLOUD_PROJECT sera déjà défini sur l'ID du projet Google Cloud.
merge boolean Facultatif. Si la valeur est true, fusionne les clés de l'entrée dans le document. Sinon, la méthode remplace l'ensemble du document. La valeur par défaut est false.
transaction chaîne Facultatif. Valeur extraite de Firestore.runTransaction(). Marque l'opération à utiliser dans une transaction.

Exemple

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 fonction Firestore.query interroge la collection donnée et renvoie une promesse qui se résout en un tableau de documents Firestore correspondant aux conditions de la requête. L'objet de document Firestore est identique à celui listé ci-dessus dans Firestore.read. Si aucun document ne correspond aux conditions de la requête, la promesse renvoyée se résout en un tableau vide.

Syntaxe

Firestore.query(collection, queryConditions[, options]);

Paramètres Type Description
collection chaîne Chemin d'accès à la collection. Il ne doit pas commencer ni se terminer par "/".
queryConditions Array Tableau de conditions de requête. Chaque requête se présente sous la forme d'un tableau avec trois valeurs: key, operator et expectedValue. E.g.: [['id', '<', '5'], ['state', '==', 'CA']].

Les conditions sont reliées par AND pour créer le résultat de la requête. Veuillez consulter la page sur les opérateurs de requête de Firestore pour obtenir la liste des opérateurs de requête compatibles.
options objet Options de requête facultatives. Les options compatibles sont les suivantes : projectId, disableCache, limit et transaction. Les clés d'option inconnues sont ignorées. (voir la section Options ci-dessous).

Options

Paramètres Type Description
projectId chaîne Facultatif. ID du projet Google Cloud Platform. En cas d'omission, projectId est récupéré à partir de la variable d'environnement GOOGLE_CLOUD_PROJECT tant que le paramètre d'autorisation access_firestore pour l'ID de projet est défini sur * ou GOOGLE_CLOUD_PROJECT. Si le conteneur serveur est en cours d'exécution sur Google Cloud, GOOGLE_CLOUD_PROJECT sera déjà défini sur l'ID du projet Google Cloud.
disableCache boolean Facultatif. Détermine si le cache doit être désactivé ou non. La mise en cache est activée par défaut. Les résultats sont mis en cache pendant toute la durée de la requête.
limit nombre Facultatif. Modifie le nombre maximal de résultats renvoyés par la requête. La valeur par défaut est 5.
transaction chaîne Facultatif. Valeur extraite de Firestore.runTransaction(). Marque l'opération à utiliser dans une transaction.

Exemple

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 fonction Firestore.runTransaction permet à l'utilisateur de lire et d'écrire de manière atomique depuis Firestore. Si une écriture simultanée ou un autre conflit de transaction se produit, la transaction est relancée jusqu'à deux fois. S'il échoue après trois tentatives au total, l'API rejette le message et génère une erreur. Cette API renvoie une promesse qui renvoie vers un tableau d'ID de document pour chaque opération d'écriture, si la transaction aboutit, et rejette l'erreur en cas d'échec.

Syntaxe

Firestore.runTransaction(callback[, options]);

Paramètres

Paramètres Type Description
callback function Rappel invoqué avec un ID de transaction de type chaîne. L'ID de transaction peut être transmis dans les appels d'API de lecture/écriture/requête. Cette fonction de rappel doit renvoyer une promesse. Le rappel peut s'exécuter jusqu'à trois fois avant d'échouer.
options objet Options de requête facultatives. La seule option acceptée est projectId. Les clés d'option inconnues sont ignorées. (voir la section Options ci-dessous).

Options

Paramètres Type Description
projectId chaîne Facultatif. ID du projet Google Cloud Platform. En cas d'omission, projectId est récupéré à partir de la variable d'environnement GOOGLE_CLOUD_PROJECT tant que le paramètre d'autorisation access_firestore pour l'ID de projet est défini sur * ou GOOGLE_CLOUD_PROJECT. Si le conteneur serveur est en cours d'exécution sur Google Cloud, GOOGLE_CLOUD_PROJECT sera déjà défini sur l'ID du projet Google Cloud.

Exemple

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);

Exemple d'erreur

Les erreurs disponibles dans chaque fonction Firestore seront rejetées avec un objet contenant une clé reason:

Firestore.read(...).then(onSuccess, (error) => {
  if (error.reason === 'unknown') {
    // Handle the unknown error here.
  }
});

Les motifs d'erreur peuvent inclure, sans s'y limiter, des codes d'erreur de l'API REST Firestore.

Autorisations associées

access_firestore


JSON

Renvoie un objet qui fournit des fonctions JSON.

La fonction parse() analyse une chaîne JSON pour construire la valeur ou l'objet décrit par la chaîne. Si la valeur ne peut pas être analysée (par exemple, si le format est incorrect), la fonction renvoie undefined. Si la valeur d'entrée n'est pas une chaîne, elle est convertie par coercition en chaîne.

La fonction stringify() convertit l'entrée en une chaîne JSON. Si la valeur ne peut pas être analysée (par exemple, si l'objet a un cycle), la méthode renvoie undefined.

Exemple

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'});

Syntaxe

JSON.parse(stringInput);
JSON.stringify(value);

Autorisations associées

Aucune


Math

Objet fournissant des fonctions Math.

Syntaxe

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);

Paramètres

Les paramètres des fonctions mathématiques sont convertis en nombres.

Autorisations associées

Aucune


Messages

Les API suivantes fonctionnent ensemble pour permettre la transmission de messages entre différentes parties d'un conteneur.


addMessageListener

Ajoute une fonction qui écoute un message d'un type particulier. Lorsqu'un message de ce type est envoyé à l'aide de l'API sendMessage (généralement par un tag), le rappel est exécuté de manière synchrone. Le rappel est exécuté avec deux paramètres:

  1. messageType:string
  2. message:Object

Si le rappel est ajouté dans un client, il reçoit des messages pour tous les événements créés par le client. Si le rappel ne doit recevoir des messages que d'un certain événement, associez cette API à l'événement à l'aide de bindToEvent dans la fonction onStart de l'API runContainer. Voir l'exemple.

Syntaxe

const addMessageListener = require('addMessageListener');

addMessageListener('send_pixel', (messageType, message) => {
  // This will be run whenever something sends a 'send_pixel' message.
});

Paramètres

Paramètres Type Description
messageType chaîne Type de message à écouter. Si la valeur n'est pas une chaîne, elle est convertie par coercition en chaîne.
callback function Rappel à exécuter lorsqu'un message du type applicable est envoyé. Si le rappel n'est pas une fonction, l'API ne fait rien.

Exemple

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.
      });
    }
  });
});

Autorisations associées

Nécessite l'autorisation use_message. L'autorisation doit être configurée pour autoriser au moins:

  • Un type de message avec Usage défini sur listen ou listen_and_send

hasMessageListener

Renvoie la valeur "true" si un écouteur de message a été ajouté pour le type de message donné. Renvoie false dans les autres cas.

Syntaxe

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

Autorisations associées

Aucune


sendMessage

Envoie un message du type spécifié à un écouteur enregistré. Cela permet de renvoyer des messages à partir d'un tag au client qui a exécuté le conteneur.

Syntaxe

const sendMessage = require('sendMessage');

sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});

Paramètres

Paramètres Type Description
messageType chaîne Type de message à envoyer. Si la valeur n'est pas une chaîne, elle est convertie par coercition en chaîne.
message objet Message à envoyer. Si le message n'est pas un objet, l'API ne fait rien.

Autorisations associées

Nécessite l'autorisation use_message. L'autorisation doit être configurée pour autoriser au moins:

  • Un type de message avec Usage défini sur listen_and_send ou send

Object

Renvoie un objet qui fournit des méthodes Object.

La méthode keys() fournit le comportement Object.keys() de la bibliothèque standard. Elle renvoie un tableau contenant les propres noms de propriété énumérables d'un objet donné, dans l'ordre dans lequel une boucle for...in... le ferait. Si la valeur d'entrée n'est pas un objet, elle sera forcée en un objet.

La méthode values() fournit le comportement Object.values() de la bibliothèque standard. Elle renvoie un tableau contenant les propres valeurs de propriété énumérables d'un objet donné, dans le même ordre qu'une boucle for...in.... Si la valeur d'entrée n'est pas un objet, elle sera forcée en un objet.

La méthode entries() fournit le comportement Object.entries() de la bibliothèque standard. Elle renvoie un tableau contenant les paires de propriétés [key, value] d'un objet donné, dans le même ordre qu'une boucle for...in.... Si la valeur d'entrée n'est pas un objet, elle est forcée en un objet.

La méthode freeze() fournit le comportement Object.freeze() de la bibliothèque standard. Un objet figé ne peut plus être modifié. Figer un objet empêche l'ajout de nouvelles propriétés, la suppression de propriétés existantes et la modification des valeurs des propriétés existantes. freeze() renvoie le même objet qui a été transmis. Un argument primitif ou nul est traité comme s'il s'agissait d'un objet figé et est renvoyé.

La méthode delete() fournit le comportement de l'opérateur de suppression de la bibliothèque standard. Elle supprime la clé donnée de l'objet, sauf si celui-ci est figé. Comme l'opérateur de suppression de la bibliothèque standard, il renvoie true si la première valeur d'entrée (objectInput) est un objet qui n'est pas figé, même si la deuxième valeur d'entrée (keyToDelete) spécifie une clé qui n'existe pas. Elle renvoie false dans tous les autres cas. Il diffère toutefois de l'opérateur de suppression de la bibliothèque standard sur les points suivants:

  • keyToDelete ne peut pas être une chaîne délimitée par un point spécifiant une clé imbriquée.
  • delete() ne peut pas être utilisé pour supprimer des éléments d'un tableau.
  • delete() ne peut pas être utilisé pour supprimer des propriétés du champ d'application global.

Syntaxe

Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)

Paramètres

Object.keys

Paramètres Type Description
objectInput tous Objet dont les clés doivent être énumérées. Si l'entrée n'est pas un objet, elle sera forcée en un objet.

Object.values

Paramètres Type Description
objectInput tous Objet dont les valeurs à énumérer. Si l'entrée n'est pas un objet, elle sera forcée en un objet.

Object.entries

Paramètres Type Description
objectInput tous Objet dont les paires clé/valeur doivent être énumérées. Si l'entrée n'est pas un objet, elle sera forcée en un objet.

Object.freeze

Paramètres Type Description
objectInput tous Objet à figer. Si l'entrée n'est pas un objet, elle sera traitée comme un objet figé.

Object.delete

Paramètres Type Description
objectInput tous Objet dont la clé doit être supprimée.
keyToDelete chaîne Clé de niveau supérieur à supprimer.

Exemple

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

Renvoie un objet qui fournit des méthodes d'interaction avec les promesses.

Du point de vue fonctionnel, les promesses sont équivalentes aux promesses JavaScript. Chaque instance dispose de trois méthodes qui renvoient une promesse qui permet d'effectuer une action supplémentaire lorsqu'une promesse est résolue:

  • .then() : gère à la fois les demandes résolues et refusées. Il utilise deux rappels comme paramètres: un pour le cas de réussite et un autre pour le cas d'échec.
  • .catch() : ne traite que les demandes refusées. Elle utilise un rappel comme paramètre.
  • .finally() : permet d'exécuter le code, que la promesse ait été résolue ou refusée. Prend un rappel en tant que paramètre invoqué sans argument.

Une variable qui renvoie une promesse est égale à la valeur résolue de la promesse, ou false si la promesse est refusée.

Exemple

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

Affiche une promesse qui:

  • se résout lorsque toutes les entrées sont résolues ; ou
  • rejette lorsque l'une des entrées rejette

Syntaxe

Promise.all(inputs);

Paramètres

Paramètres Type Description
inputs Array Tableau de valeurs ou de promesses. Si une entrée n'est pas une promesse, elle est transmise comme s'il s'agissait de la valeur résolue d'une promesse. La fonction renvoie une erreur si l'entrée n'est pas un tableau.

Exemple

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: ''}]
  });

Autorisations associées

Aucune

Promise.create

Crée une promesse fonctionnelle équivalente à une promesse JavaScript.

Syntaxe

Promise.create(resolver);

Paramètres

Paramètres Type Description
resolver function Une fonction appelée avec deux fonctions : résoudre et rejeter. La promesse renvoyée est résolue ou refusée lorsque le paramètre correspondant est appelé. Génère une erreur si le résolveur n'est pas une fonction.

Exemple

const Promise = require('Promise');

return Promise.create((resolve, reject) => {
  // Do asynchronous work that eventually calls resolve() or reject()
});

Autorisations associées

Aucune

API de test

Ces API fonctionnent avec des tests JavaScript en bac à sable afin de créer des tests pour les modèles personnalisés dans Google Tag Manager. Ces API de test n'ont pas besoin d'une instruction require(). [En savoir plus sur les tests des modèles personnalisés]


assertApi

Renvoie un objet de mise en correspondance qui peut être utilisé pour effectuer couramment des assertions sur l'API donnée.

Syntaxe

assertApi(apiName)

Paramètres

Paramètres Type Description
apiName chaîne Nom de l'API à vérifier (même chaîne que celle transmise à require()).

Outil de mise en correspondance

  • Subject.wasCalled()
  • Subject.wasNotCalled()
  • Subject.wasCalledWith(...expected)
  • Subject.wasNotCalledWith(...expected)

Exemples

assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');

assertThat

L'API assertThat a été modélisée d'après la bibliothèque [Truth] de Google. Elle renvoie un objet qui peut être utilisé pour effectuer couramment des assertions sur la valeur d'un sujet. En cas d'échec d'assertion, le test est immédiatement arrêté et le test est marqué comme ayant échoué. Toutefois, l'échec d'un test n'affecte pas les autres scénarios de test.

Syntaxe

assertThat(actual, opt_message)

Paramètres

Paramètres Type Description
actual tous Valeur à utiliser dans les vérifications de fluent.
opt_message chaîne Message facultatif à afficher si l'assertion échoue.

Outil de mise en correspondance

Matcher Description
isUndefined() Déclare que l'objet est undefined.
isDefined() Déclare que l'objet n'est pas undefined.
isNull() Déclare que l'objet est null.
isNotNull() Déclare que l'objet n'est pas null.
isFalse() Déclare que l'objet est false.
isTrue() Déclare que l'objet est true.
isFalsy() Il affirme que le sujet est faux. Les valeurs erronées sont undefined, null, false, NaN, 0 et '' (chaîne vide).
isTruthy() Il affirme que le sujet est véridique. Les valeurs erronées sont undefined, null, false, NaN, 0 et '' (chaîne vide).
isNaN() Déclare que le sujet est la valeur NaN.
isNotNaN() Déclare que le sujet possède une valeur autre que NaN.
isInfinity() Déclarer que le sujet est l'infini positif ou négatif.
isNotInfinity() Déclare que le sujet est une valeur autre que l'infini positive ou négative.
isEqualTo(expected) Déclare que le sujet est égal à la valeur donnée. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
isNotEqualTo(expected) Déclare que le sujet n'est pas égal à la valeur donnée. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
isAnyOf(...expected) Déclare que le sujet est égal à l'une des valeurs données. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
isNoneOf(...expected) Déclare que le sujet n'est égal à aucune des valeurs données. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
isStrictlyEqualTo(expected) Déclare que le sujet est strictement égal (===) à la valeur donnée.
isNotStrictlyEqualTo(expected) Déclare que le sujet n'est pas strictement égal (!==) à la valeur donnée.
isGreaterThan(expected) Désigne que le sujet est supérieur à (>) la valeur donnée dans une comparaison ordonnée.
isGreaterThanOrEqualTo(expected) Désigne que le sujet est supérieur ou égal à (>=) la valeur donnée dans une comparaison ordonnée.
isLessThan(expected) Désigne que le sujet est inférieur (<) à la valeur donnée dans une comparaison ordonnée.
isLessThanOrEqualTo(expected) Désigne que le sujet est inférieur ou égal à (<=) la valeur donnée dans une comparaison ordonnée.
contains(...expected) Déclare que l'objet est un tableau ou une chaîne contenant toutes les valeurs données dans n'importe quel ordre. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
doesNotContain(...expected) Déclare que l'objet est un tableau ou une chaîne qui ne contient aucune des valeurs données. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
containsExactly(...expected) Déclare que l'objet est un tableau contenant toutes les valeurs données dans n'importe quel ordre et aucune autre valeur. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
doesNotContainExactly(...expected) Déclare que le sujet est un tableau contenant un ensemble de valeurs différent des valeurs données, dans n'importe quel ordre. Il s'agit d'une comparaison de valeurs, et non d'une comparaison de référence. Le contenu des objets et des tableaux est comparé de manière récursive.
hasLength(expected) Désigne que l'objet est un tableau ou une chaîne de la longueur donnée. L'assertion échoue toujours si la valeur n'est pas un tableau ou une chaîne.
isEmpty() Déclare que l'objet est un tableau ou une chaîne vide (longueur = 0). L'assertion échoue toujours si la valeur n'est pas un tableau ou une chaîne.
isNotEmpty() Déclare que l'objet est un tableau ou une chaîne qui n'est pas vide (longueur > 0). L'assertion échoue toujours si la valeur n'est pas un tableau ou une chaîne.
isArray() Déclare que le type du sujet est un tableau.
isBoolean() Désigne que le type du sujet est une valeur booléenne.
isFunction() Déclarer que le type du sujet est une fonction.
isNumber() Déclare que le type du sujet est un nombre.
isObject() Déclarer que le type du sujet est un objet.
isString() Déclare que le type du sujet est une chaîne.

Exemples

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

L'opération échoue immédiatement au test en cours et imprime le message donné, le cas échéant.

Syntaxe

fail(opt_message);

Paramètres

Paramètres Type Description
opt_message chaîne Texte du message d'erreur facultatif.

Exemple

fail('This test has failed.');

mock

L'API mock vous permet d'ignorer le comportement des API de bac à sable. L'API fictive peut être utilisée en toute sécurité dans le code du modèle, mais elle n'est pas opérationnelle lorsqu'elle n'est pas en mode test. Les simulations sont réinitialisées avant chaque test.

Syntaxe

mock(apiName, returnValue);

Paramètres

Paramètres Type Description
apiName chaîne Nom de l'API à simuler (même chaîne que celle transmise à require()).
returnValue tous Valeur à renvoyer pour l'API ou une fonction appelée à la place de l'API. Si returnValue est une fonction, celle-ci est appelée à la place de l'API Sandboxed. Si returnValue est autre qu'une fonction, cette valeur est renvoyée à la place de l'API Sandboxed.

Exemples

mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
    onSuccess();
});

runCode

Exécute le code du modèle, c'est-à-dire le contenu de l'onglet Code, dans l'environnement de test actuel avec un objet de données d'entrée donné.

Syntaxe

runCode(data)

Paramètres

Paramètres Type Description
data objet Objet de données à utiliser dans le test.

Valeur renvoyée

Renvoie la valeur d'une variable pour les modèles de variable et undefined pour tous les autres types de modèles.

Exemple

runCode({field1: 123, field2: 'value'});