En este documento, se describen las API para el etiquetado del servidor.
addEventCallback
Registra una función de devolución de llamada que se invocará al final de un evento. La devolución de llamada se invocará cuando se hayan ejecutado todas las etiquetas del evento. La devolución de llamada recibe dos valores: el ID del contenedor que invoca la función y un objeto que contiene información sobre el evento.
Cuando esta API se usa en una etiqueta, se asocia al evento actual. Cuando se usa esta API en un cliente, se debe vincular a un evento específico mediante la función bindToEvent
de la API de runContainer
. Consulta el ejemplo para obtener más detalles.
Sintaxis
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
callback |
function | La función que se invocará al final del evento. |
El objeto eventData
contiene los siguientes datos:
Nombre de la clave | Tipo | Descripción |
---|---|---|
tags |
Matriz |
Un array de objetos de datos de etiqueta. Cada etiqueta que se activó durante el evento tendrá una entrada en este array. El objeto de los datos de la etiqueta contiene el ID de la etiqueta (id ), su estado de ejecución (status ) y su tiempo de ejecución (executionTime ). Los datos de la etiqueta también incluirán metadatos de etiqueta adicionales que se configuraron en la etiqueta.
|
En un cliente:
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();
}
});
});
En una etiqueta:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
Permisos asociados
callLater
Programa una llamada a una función para que se realice de forma asíncrona. Se llamará a la función después de que se muestre el código actual. Esto equivale a setTimeout(<function>, 0)
.
Ejemplo
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
Sintaxis
callLater(function)
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
function |
function | La función a la que se llamará. |
Permisos asociados
Ninguno
claimRequest
Usa esta API en un cliente para reclamar la solicitud. Una vez que se reclama una solicitud, el contenedor no ejecuta clientes adicionales.
Esta API genera una excepción si se la llama en una etiqueta o variable. Esta API genera una excepción si se llama después de que se muestra el cliente (p.ej., si se llama en una devolución de llamada asíncrona, como en callLater
o la función runContainer
onComplete
).
Un cliente debe reclamar la solicitud con esta API antes de llamar a la API de runContainer
.
Ejemplo
const claimRequest = require('claimRequest');
claimRequest();
Sintaxis
claimRequest();
Permisos asociados
Ninguno
computeEffectiveTldPlusOne
Muestra el dominio de nivel superior efectivo + 1 (eTLD+1) del dominio o la URL dados. El eTLD+1 se calcula mediante la evaluación del dominio con las reglas de la Lista de sufijos públicos. Por lo general, el eTLD+1 es el dominio de nivel más alto en el que puedes establecer una cookie.
Si el argumento es nulo o indefinido, el valor del argumento se muestra sin modificaciones. De lo contrario, el argumento se convierte en una string. Si el argumento no es un dominio o una URL válidos, se muestra una string en blanco. Si el servidor no puede recuperar la lista de sufijo público, el valor del argumento se muestra sin cambios.
Ejemplo
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
Sintaxis
computeEffectiveTldPlusOne(domainOrUrl);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
domainOrUrl |
string | Es un dominio o una URL en los que se debe calcular el eTLD+1. |
Permisos asociados
Ninguno
createRegex
Crea una nueva instancia de regex y la muestra unida a un objeto. No puedes acceder a la regex directamente. Sin embargo, puedes pasarlo a la API de testRegex
, String.replace()
, String.match()
y String.search()
.
Muestra null
si la regex no es válida o si Re2 no está disponible en el servidor.
Esta API usa una implementación de Re2. La imagen de Docker del servidor debe ser 2.0.0 o posterior.
Ejemplo
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
Sintaxis
createRegex(pattern, flags);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
pattern |
string | Texto de la expresión regular |
flags |
string | Una string opcional que contiene las marcas para la regex que se crea. Se admiten "i" (global) y "i" (ignorar mayúsculas y minúsculas). Los demás personajes se ignoran en silencio. |
Permisos asociados
Ninguno
decodeUri
Decodifica cualquier carácter codificado en el URI proporcionado. Muestra una string que representa el URI decodificado. Muestra undefined
cuando se proporciona una entrada no válida.
Ejemplo
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
Sintaxis
decodeUri(encoded_uri);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
encoded_uri |
string |
Un URI codificado por encodeUri() o por otros medios
|
Permisos asociados
Ninguno
decodeUriComponent
Decodifica los caracteres codificados en el componente del URI proporcionado. Muestra una string que representa el componente del URI decodificado. Muestra undefined
cuando se proporciona una entrada no válida.
Ejemplo
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
Sintaxis
decodeUriComponent(encoded_uri_component);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
encoded_uri_component |
string |
Un componente de URI codificado por encodeUriComponent() o por otros medios
|
Permisos asociados
Ninguno
encodeUri
Muestra un identificador uniforme de recursos (URI) codificado mediante un escape de caracteres especiales. Muestra una string que representa la string proporcionada codificada como un URI.
Ejemplo
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
Sintaxis
encodeUri(uri);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
uri |
string | Un URI completo. |
Permisos asociados
Ninguno
encodeUriComponent
Muestra un identificador uniforme de recursos (URI) codificado mediante un escape de caracteres especiales. Muestra una string que representa la string proporcionada codificada como URI.
Ejemplo
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
Sintaxis
encodeUriComponent(str);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
str |
string | Es un componente de un URI. |
Permisos asociados
Ninguno
extractEventsFromMpv1
Traduce una solicitud entrante del Protocolo de medición V1 a una lista de eventos en formato de esquema unificado. Muestra la lista de eventos extraídos. Muestra un error si la solicitud no está en el formato correcto.
Ejemplo
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.
}
}
Sintaxis
extractEventsFromMpv1();
Permisos asociados
Requiere el permiso read_request
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
body
query parameters
extractEventsFromMpv2
Traduce una solicitud entrante del Protocolo de medición V2 a una lista de eventos en formato de esquema unificado. Muestra la lista de eventos extraídos. Muestra un error si la solicitud no está en el formato correcto.
Ejemplo
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.
}
}
Sintaxis
extractEventsFromMpv2();
Permisos asociados
Requiere el permiso read_request
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
body
query parameters
fromBase64
Decodifica una string codificada en base64. Muestra undefined
si la entrada no es válida.
Sintaxis
fromBase64(base64EncodedString);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
base64EncodedString |
string | String codificada en base64. |
Ejemplo
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
Permisos asociados
Ninguno
generateRandom
Muestra un número (número entero) aleatorio dentro del rango especificado.
Ejemplo
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
Sintaxis
generateRandom(min, max);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
min |
número | Valor potencial mínimo del número entero que se muestra (incluido) |
max |
número | Valor potencial máximo del número entero mostrado (incluido). |
Permisos asociados
Ninguno
getAllEventData
Muestra una copia de los datos del evento.
Sintaxis
getAllEventData();
Permisos asociados
getClientName
Muestra una string que contiene el nombre del cliente actual.
Sintaxis
getClientName();
Permisos asociados
getContainerVersion
Muestra un objeto que contiene datos sobre el contenedor actual. El objeto que se muestre tendrá los siguientes campos:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
Ejemplo
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
Sintaxis
getContainerVersion();
Permisos asociados
getCookieValues
Muestra un array que contiene los valores de todas las cookies con ese nombre.
Ejemplo
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
Sintaxis
getCookieValues(name[, noDecode]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
name |
string | Es el nombre de la cookie. |
noDecode |
booleano |
Si es true , los valores de las cookies no se decodificarán antes de que se muestren. La configuración predeterminada es false .
|
Permisos asociados
getEventData
Muestra una copia del valor en la ruta de acceso determinada en los datos de eventos. Muestra undefined
si no hay datos de eventos o si no hay ningún valor en la ruta de acceso determinada.
Ejemplo
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
keyPath |
cualquiera |
La ruta de la clave, donde los componentes de la ruta se separan con puntos. Los componentes de la ruta de acceso pueden ser claves de un objeto o índices de un array. Si keyPath no es una string, se convierte en una string.
|
Sintaxis
getEventData(keyPath);
Permisos asociados
getGoogleScript
Recupera un recurso de un conjunto predeterminado de secuencias de comandos de Google y muestra una promesa con la secuencia de comandos y los metadatos de almacenamiento en caché asociados.
La promesa se resolverá en un objeto que contiene dos claves: script
y metadata
. Si la solicitud falla, la promesa se rechazará con una clave reason
.
El objeto metadata
contendrá los siguientes metadatos de almacenamiento en caché según los encabezados de respuesta de recursos. Cada campo solo estará presente si el encabezado correspondiente está presente en la respuesta de recursos.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
Ejemplo
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
Sintaxis
getGoogleScript(script[, options]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
script |
string |
Es el nombre de la secuencia de comandos. Las secuencias de comandos compatibles son 'ANALYTICS' , 'GTAG' y 'GTM' .La opción 'ANALYTICS' recupera la secuencia de comandos de Google Analytics de https://www.google-analytics.com/analytics.js .La opción 'GTAG' recupera la secuencia de comandos de la etiqueta global del sitio (gtag.js) de https://www.googletagmanager.com/gtag/js .La opción 'GTM' recupera la secuencia de comandos de Google Tag Manager de https://www.googletagmanager.com/gtm.js .
|
options |
objeto | Opciones de solicitud opcionales. Consulta a continuación las opciones compatibles. |
Opciones
Opción | Tipo | Descripción |
---|---|---|
id |
string |
Se aplica a 'GTAG' con el ID de medición de gtag y a 'GTM' con el ID de contenedor web (p. ej., GTM-XXXX).
|
debug |
cualquiera | Si es verdadero, solicita y muestra la versión de depuración de la secuencia de comandos de medición. |
timeout |
número |
El tiempo de espera de la solicitud en milisegundos; se ignoran los valores no positivos. Si se agota el tiempo de espera de la solicitud, la devolución de llamada se invocará con undefined para el valor de la secuencia de comandos y {} para el objeto de metadatos.
|
Se ignoran las claves de opciones no reconocidas.
Permisos asociados
Requiere el permiso send_http
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
- Permitir Google Domains
getRemoteAddress
Muestra una representación de string de la dirección IP donde se originó la solicitud, p.ej., 12.345.67.890
para IPv4 o 2001:0db8:85a3:0:0:8a2e:0370:7334
para IPv6, mediante la lectura de encabezados de solicitud como Forwarded y X-Forwarded-For.
Nota: Esta API hace su mejor esfuerzo para descubrir la IP de origen, pero no puede garantizar que el resultado sea preciso.
Sintaxis
getRemoteAddress();
Permisos asociados
Requiere el permiso read_request
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
- Encabezados
Forwarded
yX-Forwarded-For
- Dirección IP remota
getRequestBody
Muestra el cuerpo de la solicitud como una string, si está presente, o undefined
de lo contrario.
Sintaxis
getRequestBody();
Permisos asociados
getRequestHeader
Muestra el valor del encabezado de la solicitud con nombre como una string, si está presente, o undefined
en caso contrario. Si se repite el encabezado, los valores que se muestran se unen con ', '
.
Ejemplo
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
Sintaxis
getRequestHeader(headerName);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
headerName |
string | Es el nombre del encabezado. Este valor no distingue mayúsculas de minúsculas. |
Permisos asociados
getRequestMethod
Muestra el método de solicitud, p.ej., 'GET'
o 'POST'
, como una string.
Ejemplo
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
Sintaxis
getRequestMethod();
Permisos asociados
Ninguno
getRequestPath
Muestra la ruta de la solicitud sin la cadena de consulta. Por ejemplo, si la URL es '/foo?id=123'
, se muestra '/foo'
. Quita automáticamente el prefijo de URL del contenedor del servidor de la ruta. Por ejemplo, si la URL del contenedor del servidor es
https://example.com/analytics
y la ruta de la solicitud es '/analytics/foo'
, se mostrará '/foo'
.
Ejemplo
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
Sintaxis
getRequestPath();
Permisos asociados
getRequestQueryParameter
Muestra el valor decodificado del parámetro de la string de consulta con nombre como una string, o undefined
si el parámetro no está presente. Si el parámetro se repite en la cadena de consulta, se mostrará el primer valor que aparece en la cadena de consulta.
Ejemplo
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
Sintaxis
getRequestQueryParameter(name);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
name |
string | Es el nombre del parámetro de consulta. |
Permisos asociados
getRequestQueryParameters
Muestra los parámetros de consulta de la solicitud HTTP entrantes como un objeto que asigna nombres de parámetros de consulta al valor o los valores correspondientes. Los nombres y valores de los parámetros se decodifican.
Ejemplo
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
Sintaxis
getRequestQueryParameters();
Permisos asociados
getRequestQueryString
Muestra la consulta de la solicitud como una string, sin el signo de interrogación inicial, o una string vacía si la URL de la solicitud no incluye una cadena de consulta.
Ejemplo
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
Sintaxis
getRequestQueryString();
Permisos asociados
getTimestamp
Obsoleto. Se prefiere getTimestampMillis.
Muestra un número que representa la hora actual en milisegundos desde la época de Unix, como lo muestra Date.now()
.
Sintaxis
getTimestamp();
Permisos asociados
Ninguno
getTimestampMillis
Muestra un número que representa la hora actual en milisegundos desde la época de Unix, como lo muestra Date.now()
.
Sintaxis
getTimestampMillis();
Permisos asociados
Ninguno
getType
Muestra una string que describe el tipo del valor determinado.
Tipo de entrada | Valor mostrado |
---|---|
string | 'string' |
número | 'number' |
booleano | 'boolean' |
null | 'null' |
no definido | 'undefined' |
Matriz | 'array' |
Objeto | 'object' |
Función | 'function' |
Ejemplo
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);
}
Sintaxis
getType(value);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
value |
cualquiera | Valor de entrada. |
Permisos asociados
Ninguno
isRequestMpv1
Muestra true
si la solicitud entrante es una solicitud del Protocolo de medición V1, o false
en caso contrario.
Ejemplo
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
Sintaxis
isRequestMpv1();
Permisos asociados
Ninguno
isRequestMpv2
Muestra true
si la solicitud entrante es una solicitud del Protocolo de medición V2, o, de lo contrario, false
.
Ejemplo
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
Sintaxis
isRequestMpv2();
Permisos asociados
Ninguno
logToConsole
Registra sus argumentos en la consola.
Estos registros se pueden ver en el Explorador de registros en Google Cloud Console.
Desde el Explorador de registros, ejecuta la consulta logName =~ "stdout"
para ver las entradas de registro que creó esta API.
Ejemplo
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
Sintaxis
logToConsole(argument1[, argument2, ...]);
Parámetros
La API toma uno o más argumentos, cada uno de los cuales se convierte en una string, si es necesario, y se registra en la consola.
Permisos asociados
makeInteger
Convierte el valor especificado en un número (número entero).
Sintaxis
makeInteger(value);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
value |
cualquier tipo | Valor que se va a convertir |
Permisos asociados
Ninguno
makeNumber
Convierte el valor determinado en un número.
Sintaxis
makeNumber(value);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
value |
cualquier tipo | Valor que se va a convertir |
Permisos asociados
Ninguno
makeString
Muestra el valor dado como una string.
Sintaxis
makeString(value);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
value |
cualquier tipo | Valor que se va a convertir |
Permisos asociados
Ninguno
makeTableMap
Convierte un objeto de tabla simple con dos columnas en Map
. Se usa para cambiar un campo de plantilla SIMPLE_TABLE
con dos columnas a un formato más manejable.
Por ejemplo, esta función podría convertir un objeto de tabla:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
en un mapa:
{
'k1': 'v1',
'k2': 'v2'
}
Muestra un Object: el Map
convertido de pares clave-valor se agregó a este o, de lo contrario, null
.
Sintaxis
makeTableMap(tableObj, keyColumnName, valueColumnName);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
tableObj |
Lista |
El objeto de la tabla que se va a convertir. Es una lista de mapas en la que cada Map representa una fila en la tabla. Cada nombre de propiedad en un objeto de fila es el nombre de la columna, y el valor de la propiedad es el valor de la columna en la fila.
|
keyColumnName |
string |
Nombre de la columna cuyos valores se convertirán en claves en el Map convertido.
|
valueColumnName |
string |
Nombre de la columna cuyos valores se convertirán en valores en el Map convertido.
|
Permisos asociados
Ninguno
parseUrl
Muestra un objeto que contiene todas las partes de un componente de una URL determinada, similar al objeto URL
.
Esta API mostrará undefined
para cualquier URL con formato incorrecto. Para las URLs con formato correcto, los campos que no están presentes en la string de URL tendrán un valor de string vacía o, en el caso de searchParams
, un objeto vacío.
El objeto que se muestre tendrá los siguientes campos:
{
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,
}
Ejemplo
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
Sintaxis
parseUrl(url);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
url |
string | Es la URL completa que se analizará. |
Permisos asociados
Ninguno
returnResponse
Vacía la respuesta que otras plantillas establecieron previamente mediante las API que modifican la respuesta, incluidas setCookie, setPixelResponse, setResponseBody, setResponseHeader y setResponseStatus. El valor predeterminado es un código de estado HTTP 200, cuerpo vacío y sin encabezados.
Se recomienda usar esta API a partir de una plantilla de cliente.
Sintaxis
returnResponse();
Ejemplo
Consulta el ejemplo de runContainer
.
Permisos asociados
runContainer
Ejecuta la lógica del contenedor (variables, activadores, etiquetas) en el alcance de un evento. Si se llama a esta API durante la ejecución del contenedor, este se vuelve a ejecutar.
Las devoluciones de llamada onComplete
y onStart
reciben una función llamada bindToEvent
. Usa bindToEvent
para ejecutar una API en el contexto del evento.
Consulta el ejemplo de addEventCallback para obtener más detalles.
Se recomienda usar esta API a partir de una plantilla de cliente.
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());
Sintaxis
runContainer(event, onComplete, onStart);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
event |
objeto | Los parámetros del evento. |
onComplete |
function | Una devolución de llamada que se invoca después de que todas las etiquetas terminan de activarse. |
onStart |
function | Una devolución de llamada que se invoca inmediatamente, antes de que las etiquetas comiencen a activarse. |
Permisos asociados
sendEventToGoogleAnalytics
Envía un solo evento mediante datos de eventos comunes a Google Analytics y muestra una promesa que se resuelve en un objeto con una clave location
o se rechaza en un objeto con una clave reason
. El destino, Universal Analytics o Google Analytics 4, se basa en el ID de medición de los datos del evento.
El campo location
se establece en el encabezado location
, si está presente.
Ejemplo
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();
});
Sintaxis
sendEventToGoogleAnalytics(event);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
event |
objeto | El evento en formato de esquema unificado |
Permisos asociados
Requiere el permiso send_http
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
- Permitir Google Domains
sendHttpGet
Realiza una solicitud HTTP GET a la URL especificada y muestra una promesa que se resuelve con el resultado una vez que se completa o se agota el tiempo de espera.
El resultado resuelto es un objeto que contiene tres claves: statusCode
, headers
y body
. Si la solicitud falla (p.ej., URL no válida, no hay una ruta al host,
un error de negociación SSL, etc.), la promesa se rechazará con lo siguiente: {reason:
'failed'}
. Si se configuró la opción timeout
y se agotó el tiempo de espera de la solicitud, la promesa se rechazará con lo siguiente: {reason: 'timed_out'}
Ejemplo
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);
Sintaxis
sendHttpGet(url[, options]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
url |
string | La URL de la solicitud. |
options |
objeto | Opciones de solicitud opcionales. Las opciones compatibles son encabezados y tiempo de espera. Se ignoran las claves de opciones desconocidas. (Consulta Opciones a continuación). |
- headers: Encabezados de solicitud adicionales representados como un objeto
- timeout: Es el tiempo de espera, en milisegundos, antes de que se anule la solicitud.
La configuración predeterminada es
15000
.
Permisos asociados
sendHttpRequest
Realiza una solicitud HTTP a la URL especificada y muestra una promesa que se resuelve con la respuesta una vez que se completa o se agota el tiempo de espera.
El resultado resuelto es un objeto que contiene tres claves: statusCode
, headers
y body
. Si la solicitud falla (p.ej., URL no válida, no hay una ruta al host,
un error de negociación SSL, etc.), la promesa se rechazará con lo siguiente: {reason:
'failed'}
. Si se configuró la opción timeout
y se agotó el tiempo de espera de la solicitud, la promesa se rechazará con lo siguiente: {reason: 'timed_out'}
Ejemplo
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']);
});
Sintaxis
sendHttpRequest(url[, options[, body]]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
url |
string | La URL de la solicitud. |
options |
objeto | Opciones de solicitud opcionales. Las opciones compatibles son headers, method y timeout. Se ignoran las claves de opciones desconocidas. (Consulta Opciones a continuación). |
body |
string | Cuerpo de solicitud opcional. |
- headers: Encabezados de solicitud adicionales
- method: El método de solicitud de forma predeterminada es “GET”.
- timeout: Es el tiempo de espera, en milisegundos, antes de que se anule la solicitud.
La configuración predeterminada es
15000
.
Permisos asociados
sendPixelFromBrowser
Envía un comando al navegador para cargar la URL proporcionada como una etiqueta <img>
. Este protocolo de comando es compatible con las etiquetas web Google Analytics: configuración de GA4 y Google Analytics: evento de GA. Debes habilitar la opción Enviar al contenedor del servidor en la etiqueta de configuración. Consulta las instrucciones para obtener más detalles.
Esta API muestra false
si la solicitud entrante no admite el protocolo de comando o si la respuesta ya se vació. De lo contrario, esta API muestra true
.
Ejemplo:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
Sintaxis
sendPixelFromBrowser(url)
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
url |
string | La URL que se enviará al navegador. |
Permisos asociados
setCookie
Establece o borra una cookie con las opciones especificadas.
Para borrar una cookie, se debe configurar una cookie con la misma ruta de acceso y el mismo dominio con el que se creó, y asignarle un valor que venza en el pasado, p.ej., "Thu, 01 Jan 1970 00:00:00 GMT"
.
Ten en cuenta que se debe llamar a returnResponse para que la respuesta se envíe al cliente.
Ejemplo
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
Sintaxis
setCookie(name, value[, options[, noEncode]]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
name |
string | Es el nombre de la cookie. El nombre no distingue mayúsculas de minúsculas. |
value |
string | Es el valor de la cookie. |
options |
objeto | Atributos opcionales de las cookies:domain, expires, fallbackDomain,httpOnly, max-age, path, secure y sameSite (Consulta Opciones a continuación). |
noEncode |
booleano |
Si es verdadero, el valor de la cookie no se codificará. La configuración predeterminada es false .
|
dominio: El host al que se enviará la cookie. Si se establece el valor especial “automático”, se calculará automáticamente el host con la siguiente estrategia:
- eTLD+1 de encabezado
Forwarded
, si está presente - eTLD+1 de encabezado
X-Forwarded-Host
, si está presente - eTLD+1 de encabezado
Host
.
- eTLD+1 de encabezado
caduca: La vida útil máxima de la cookie. Este debe ser una string con fecha en formato UTC, p.ej., "Sáb, 26 oct 1985 08:21:00 GMT". Si se configuran
expires
ymax-age
,max-age
tiene prioridad.httpOnly: Evita que JavaScript acceda a la cookie si
true
.max-age: Es la cantidad de segundos transcurridos hasta el vencimiento de la cookie. Si el número es negativo o nulo, la cookie vencerá de inmediato. Si se configuran
expires
ymax-age
,max-age
tiene prioridad.path: Es una ruta que debe existir en la URL solicitada o el navegador no envía el encabezado de cookies.
secure: Si se configura como
true
, la cookie solo se envía al servidor cuando se realiza una solicitud desde un extremohttps:
.sameSite: afirma que no se debe enviar una cookie con solicitudes de origen cruzado. Debe ser
'strict'
,'lax'
o'none'
.
Permisos asociados
setPixelResponse
Establece el cuerpo de la respuesta en un GIF de 1 x 1, establece el encabezado Content-Type en “image/gif”, establece encabezados de almacenamiento en caché para que los usuarios-agentes no almacenen en caché la respuesta y establece el estado de la respuesta en 200.
Ten en cuenta que se debe llamar a returnResponse para que la respuesta se envíe al cliente.
Sintaxis
setPixelResponse();
Permisos asociados
Requiere el permiso access_response
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
headers
: se deben permitir las siguientes clavescontent-type
cache-control
expires
pragma
body
status
setResponseBody
Establece el cuerpo de la respuesta en el argumento.
Ten en cuenta que se debe llamar a returnResponse para que la respuesta se envíe al cliente.
Sintaxis
setResponseBody(body[, encoding]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
body |
string | Valor que se establecerá como el cuerpo de la respuesta. |
encoding |
string |
La codificación de caracteres del cuerpo de la respuesta (el valor predeterminado es 'utf8' ). Los valores admitidos incluyen 'ascii' , 'utf8' , 'utf16le' , 'ucs2' , 'base64' , 'latin1' , 'binary' y 'hex' .
|
Permisos asociados
Requiere el permiso access_response
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
body
setResponseHeader
Establece un encabezado en la respuesta que se mostrará. Si esta API configuró un encabezado con este nombre (distinción entre mayúsculas y minúsculas), la última llamada reemplazará o borrará el valor establecido por el emisor anterior.
Ten en cuenta que se debe llamar a returnResponse para que la respuesta se envíe al cliente.
Sintaxis
setResponseHeader(name, value);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
name |
string | Es el nombre del encabezado. Los nombres de encabezados HTTP no distinguen entre mayúsculas y minúsculas, por lo que el nombre del encabezado aparecerá en minúsculas. |
value |
string sin definir | Es el valor del encabezado. Si es nulo o indefinido, se borra el encabezado con nombre de la respuesta que se mostrará. |
Permisos asociados
Requiere el permiso access_response
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
headers
setResponseStatus
Establece el código de estado HTTP de la respuesta que se mostrará.
Ten en cuenta que se debe llamar a returnResponse para que la respuesta se envíe al cliente.
Sintaxis
setResponseStatus(statusCode);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
statusCode |
número | El código de estado HTTP que se mostrará. |
Permisos asociados
Requiere el permiso access_response
. El permiso debe estar configurado para permitir el acceso al menos a lo siguiente:
status
sha256
Calcula el resumen SHA-256 de la entrada y, luego, invoca una devolución de llamada con el resumen codificado en base64, a menos que el objeto options
especifique una codificación de salida diferente.
Esta firma y este comportamiento de la API coinciden con la API de sha256
para contenedores web. Sin embargo, las plantillas personalizadas en contenedores del servidor deben usar la API de sha256Sync
para un código más simple.
Ejemplo
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'});
Sintaxis
sha256(input, onSuccess, options = undefined);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
input |
string | String de hash. |
onSuccess |
function |
Se llama con el resumen resultante, codificado en base64, a menos que el objeto options especifique una codificación de salida diferente.
|
options |
objeto |
Opcional para especificar la codificación de salida. Si se especifica, el objeto debe contener la clave outputEncoding con el valor base64 o hex .
|
Permisos asociados
Ninguno
sha256Sync
Calcula y muestra el resumen SHA-256 de la entrada, codificado en base64, a menos que el objeto options
especifique una codificación de salida diferente.
Ejemplo
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));
Sintaxis
sha256Sync(input, options = undefined);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
input |
string | String de hash. |
options |
objeto |
Opcional para especificar la codificación de salida. Si se especifica, el objeto debe contener la clave outputEncoding con el valor base64 o hex .
|
Permisos asociados
Ninguno
templateDataStorage
Muestra un objeto con métodos para acceder al almacenamiento de datos de la plantilla. El almacenamiento de datos de plantilla permite compartir los datos entre las ejecuciones de una sola plantilla. Los datos almacenados en el almacenamiento de datos de plantillas persisten en el servidor que ejecuta el contenedor. En la mayoría de los casos, hay varios servidores que ejecutan el contenedor, por lo que almacenar datos en el almacenamiento de datos de la plantilla no garantiza que cada solicitud posterior tenga acceso a los datos.
El término "datos" en el nombre "templateDataStorage" hace referencia al hecho de que solo los tipos de datos sin formato y que no son funcionales se pueden almacenar mediante esta API. Todas las funciones o referencias a funciones que se pasen a la API se almacenarán como null
.
Sintaxis
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();
Ejemplo
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
Permisos asociados
testRegex
Prueba una string en una regex creada mediante la API de createRegex
. Muestra true
si la regex coincide. De lo contrario, muestra false
.
Una regex creada con la marca global tiene estado. Consulta la documentación de RegExp para obtener más detalles.
Ejemplo
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');
Sintaxis
testRegex(regex, string);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
regex |
Objeto | La regex con la que se va a realizar la prueba, que se muestra de la API de createRegex. |
string |
string | String de prueba para probar. |
Permisos asociados
Ninguno
toBase64
Codifica una string como base64.
Sintaxis
toBase64(input);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
input |
string | String para codificar. |
Ejemplo
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
Permisos asociados
Ninguno
BigQuery
Muestra un objeto que proporciona funciones de BigQuery.
La función BigQuery.insert
permite escribir datos en una tabla de BigQuery. Muestra una promesa que se resuelve cuando se inserta correctamente o se rechaza ante un error.
Cuando la inserción se realiza correctamente, la promesa se resuelve sin argumentos.
Cuando la inserción falla, la promesa se rechaza con una lista de objetos que contienen el motivo del error y, posiblemente, un objeto de fila si se produce un error. Es posible que una parte de la solicitud se complete correctamente, mientras que otras partes no. En este caso, la promesa se rechaza con una lista de errores para cada fila con un objeto de fila que ayuda a distinguir las filas que se insertaron (consulta Ejemplos de errores a continuación). Consulta la documentación de BigQuery sobre los mensajes de error para obtener más información.
Sintaxis
BigQuery.insert(connectionInfo, rows[, options]);
Parámetro | Tipo | Descripción |
---|---|---|
connectionInfo |
objeto |
Define la información necesaria para conectarse a una tabla de BigQuery. Hay un parámetro opcional y dos parámetros obligatorios:
|
rows |
Matriz | Las filas que se insertarán en la tabla. |
options |
objeto | Opciones de solicitud opcionales. Las opciones compatibles son ignoreUnknownValues y skipInvalidRows. Se ignoran las claves de opciones desconocidas. (Consulta Opciones a continuación). |
Parámetro | Tipo | Descripción |
---|---|---|
ignoreUnknownValues |
booleano | Si se configura como true , acepta filas que contengan valores que no coincidan con el esquema. Se ignorarán los valores desconocidos. La configuración predeterminada es false . |
skipInvalidRows |
booleano | Si se configura en true , inserta todas las filas válidas de una solicitud, incluso si existen filas no válidas. La configuración predeterminada es false . |
Un error de módulo no encontrado significa que es probable que tu contenedor de servidor esté ejecutando una versión anterior de nuestra imagen que aún no había incluido el módulo de BigQuery. Vuelve a implementar el contenedor de servidor con la misma configuración mediante la secuencia de comandos de implementación. El módulo se incluirá automáticamente cuando finalice la operación.
Por lo general, un error que no es de inserción tiene un objeto de error con una clave reason
:
[{reason: 'invalid'}]
Un error de inserción puede contener varios objetos de error con un array errors
y un objeto row
. El siguiente es un ejemplo de una respuesta de error cuando se insertan dos filas en las que solo una fila tiene un error:
[
{
"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
}
}
]
Ejemplo
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);
Permisos asociados
Firestore
Muestra un objeto que proporciona funciones de Firestore.
Esta API solo admite Firestore en modo nativo, no Firestore en modo Datastore.
Firestore.read
La función Firestore.read
lee los datos de un documento de Firestore y muestra una promesa que se resuelve como un objeto que contiene dos claves: id
y data
. Si el documento no existe, la promesa se rechaza con un objeto que contiene una clave reason
igual a not_found
.
Sintaxis
Firestore.read(path[, options]);
Parámetro | Tipo | Descripción |
---|---|---|
path |
string | La ruta de acceso al documento o la colección. No debe comenzar ni terminar con una “/”. |
options |
objeto | Opciones de solicitud opcionales Las opciones compatibles son projectId, disableCache y transaction. Se ignoran las claves de opciones desconocidas. (Consulta Opciones a continuación). |
Parámetro | Tipo | Descripción |
---|---|---|
projectId |
string | Opcional: ID del proyecto de Google Cloud Platform. Si se omite, el projectId se recupera de la variable de entorno GOOGLE_CLOUD_PROJECT siempre que la configuración de permisos access_firestore para el ID del proyecto se establezca en * o GOOGLE_CLOUD_PROJECT . Si el contenedor del servidor se ejecuta en
Google Cloud, GOOGLE_CLOUD_PROJECT ya se establecerá
en el ID del proyecto de Google Cloud. |
disableCache |
booleano | Opcional: Determina si se debe inhabilitar o no la caché. El almacenamiento en caché está habilitado de forma predeterminada, lo que almacenará en caché los resultados durante la solicitud. |
transaction |
string | Opcional: El valor recuperado de Firestore.runTransaction(). Marca la operación que se usará en una transacción. |
Ejemplo
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
La función Firestore.write
escribe datos en una colección o un documento de Firestore. Si la ruta de acceso es a una colección, se creará un documento con un ID generado de forma aleatoria. Si la ruta a un documento no existe, se creará. Esta API muestra una promesa que se resuelve con el ID del documento agregado o modificado. Si se usa la opción de transacción, la API seguirá mostrando una promesa, pero no contendrá el ID, ya que las escrituras se agrupan en lotes.
Sintaxis
Firestore.write(path, input[, options]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
path |
string | La ruta de acceso al documento o la colección. No debe comenzar ni terminar con una “/”. |
input |
objeto | Valor que se va a escribir en el documento. Si se configura la opción de combinación, la API combinará las claves de la entrada en el documento. |
options |
objeto | Opciones de solicitud opcionales Las opciones compatibles son projectId, merge y transaction. Se ignoran las claves de opciones desconocidas. (Consulta Opciones a continuación). |
Parámetro | Tipo | Descripción |
---|---|---|
projectId |
string | Opcional: ID del proyecto de Google Cloud Platform. Si se omite, el projectId se recupera de la variable de entorno GOOGLE_CLOUD_PROJECT siempre que la configuración de permisos access_firestore para el ID del proyecto se establezca en * o GOOGLE_CLOUD_PROJECT . Si el contenedor del servidor se ejecuta en
Google Cloud, GOOGLE_CLOUD_PROJECT ya se establecerá
en el ID del proyecto de Google Cloud. |
merge |
booleano | Opcional: Si se configura como true , combina las claves de entrada en el documento; de lo contrario, el método anulará todo el documento. La configuración predeterminada es false . |
transaction |
string | Opcional: El valor recuperado de Firestore.runTransaction(). Marca la operación que se usará en una transacción. |
Ejemplo
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 función Firestore.query
consulta la colección determinada y muestra una promesa que se resuelve en un array de documentos de Firestore que coincide con las condiciones de la consulta. El objeto de documento de Firestore es el mismo que se indica más arriba en Firestore.read
. Si no hay documentos que coincidan con las condiciones de la consulta, la promesa que se muestra se resolverá en un arreglo vacío.
Sintaxis
Firestore.query(collection, queryConditions[, options]);
Parámetro | Tipo | Descripción |
---|---|---|
collection |
string | La ruta de acceso a la colección. No debe comenzar ni terminar con una “/”. |
queryConditions |
Matriz | Un array de condiciones de consulta. Cada consulta tiene la forma de un array con tres valores: key, operator y expectedValue. P. ej.:
[['id', ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]. Las condiciones se combinan con AND para crear el resultado de la consulta. Consulta los operadores de consulta de Firestore para obtener una lista de los operadores de consulta compatibles. |
options |
objeto | Opciones de solicitud opcionales Las opciones compatibles son: projectId, disableCache, limit y transaction. Se ignoran las claves de opciones desconocidas. (Consulta Opciones a continuación). |
Parámetro | Tipo | Descripción |
---|---|---|
projectId |
string | Opcional: ID del proyecto de Google Cloud Platform. Si se omite, el projectId se recupera de la variable de entorno GOOGLE_CLOUD_PROJECT siempre que la configuración de permisos access_firestore para el ID del proyecto se establezca en * o GOOGLE_CLOUD_PROJECT . Si el contenedor del servidor se ejecuta en
Google Cloud, GOOGLE_CLOUD_PROJECT ya se establecerá
en el ID del proyecto de Google Cloud. |
disableCache |
booleano | Opcional: Determina si se debe inhabilitar o no la caché. El almacenamiento en caché está habilitado de forma predeterminada, lo que almacenará en caché los resultados durante la solicitud. |
limit |
número | Opcional: Cambia la cantidad máxima de resultados que muestra la consulta. El valor predeterminado es 5. |
transaction |
string | Opcional: El valor recuperado de Firestore.runTransaction(). Marca la operación que se usará en una transacción. |
Ejemplo
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 función Firestore.runTransaction
permite que el usuario lea y escriba de forma atómica desde Firestore. Si se produce un conflicto de escritura simultáneo o de otra transacción, se volverá a intentar la transacción hasta dos veces. Si falla
después de tres intentos en total, la API se rechazará con un error. Esta API muestra una promesa que se resuelve en un array de ID de documento para cada operación de escritura, si la transacción se realizó correctamente, y se rechazará con el error si falla.
Sintaxis
Firestore.runTransaction(callback[, options]);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
callback |
function | Una devolución de llamada que se invoca con un ID de transacción de string. El ID de transacción se puede pasar a las llamadas a la API de lectura/escritura/consulta. Esta función de devolución de llamada debe mostrar una promesa. Es posible que la devolución de llamada se ejecute hasta tres veces antes de fallar. |
options |
objeto | Opciones de solicitud opcionales La única opción compatible que se admite es projectId. Se ignoran las claves de opciones desconocidas. (Consulta Opciones a continuación). |
Parámetro | Tipo | Descripción |
---|---|---|
projectId |
string | Opcional: ID del proyecto de Google Cloud Platform. Si se omite, el projectId se recupera de la variable de entorno GOOGLE_CLOUD_PROJECT siempre que la configuración de permisos access_firestore para el ID del proyecto se establezca en * o GOOGLE_CLOUD_PROJECT . Si el contenedor del servidor se ejecuta en
Google Cloud, GOOGLE_CLOUD_PROJECT ya se establecerá
en el ID del proyecto de Google Cloud. |
Ejemplo
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);
Los errores disponibles en cada función de Firestore se rechazarán con un objeto que contenga una clave reason
:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
Los motivos de error pueden contener, entre otros, los códigos de error de la API de REST de Firestore.
Permisos asociados
JSON
Muestra un objeto que proporciona funciones JSON.
La función parse()
analiza una string JSON para construir el valor o el objeto descrito por la string. Si no se puede analizar el valor (p.ej., JSON con formato incorrecto), la función mostrará undefined
. Si el valor de entrada no es una string, la entrada se convertirá en una string.
La función stringify()
convierte la entrada en una string JSON. Si no se puede analizar el valor (p.ej., el objeto tiene un ciclo), el método mostrará undefined
.
Ejemplo
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'});
Sintaxis
JSON.parse(stringInput);
JSON.stringify(value);
Permisos asociados
Ninguno
Math
Un objeto que proporciona funciones Math
.
Sintaxis
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);
Parámetros
Los parámetros de las funciones matemáticas se convierten en números.
Permisos asociados
Ninguno
Messages
Las siguientes APIs funcionan juntas para permitir que se pasen mensajes entre diferentes partes de un contenedor.
addMessageListener
Agrega una función que escucha un mensaje de un tipo determinado. Cuando se envía un mensaje de ese tipo con la API de sendMessage
(por lo general, mediante una etiqueta), la devolución de llamada se ejecuta de forma síncrona. La devolución de llamada se ejecuta con dos parámetros:
messageType:string
message:Object
Si la devolución de llamada se agrega a un cliente, esta recibirá mensajes en todos los eventos que el cliente cree. Si la devolución de llamada debería recibir mensajes
de solo un evento determinado, vincula esta API al evento con bindToEvent
en la función onStart
de la API de runContainer
. Vea el ejemplo.
Sintaxis
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
messageType |
string | El tipo de mensaje que se escuchará. Si el valor no es una string, se convertirá en una string. |
callback |
function | Es la devolución de llamada que se ejecuta cuando se envía un mensaje del tipo aplicable. Si la devolución de llamada no es una función, la API no hará nada. |
Ejemplo
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.
});
}
});
});
Permisos asociados
Requiere el permiso use_message
. El permiso debe configurarse para permitir al menos lo siguiente:
- Un tipo de mensaje con
Usage
delisten
olisten_and_send
.
hasMessageListener
Muestra true si se agregó un objeto de escucha de mensajes para el tipo de mensaje dado. De lo contrario, muestra un valor falso.
Sintaxis
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
Permisos asociados
Ninguno
sendMessage
Envía un mensaje del tipo especificado a un objeto de escucha registrado. Esto se puede usar para enviar mensajes desde una etiqueta al cliente que ejecutó el contenedor.
Sintaxis
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
messageType |
string | El tipo de mensaje que se enviará. Si el valor no es una string, se convertirá en una string. |
message |
objeto | El mensaje que se enviará. Si el mensaje no es un objeto, la API no hará nada. |
Permisos asociados
Requiere el permiso use_message
. El permiso debe configurarse para permitir al menos lo siguiente:
- Un tipo de mensaje con
Usage
delisten_and_send
osend
.
Object
Muestra un objeto que proporciona métodos Object
.
El método keys()
proporciona el comportamiento Object.keys() de la biblioteca estándar. Muestra un array de los nombres de propiedades enumerables de un objeto determinado en el mismo orden en que lo haría un bucle for...in...
. Si el valor de entrada no es un objeto, se convertirá en un objeto.
El método values()
proporciona el comportamiento Object.values() de la biblioteca estándar. Muestra un array de los valores de propiedad enumerables de un objeto determinado en el mismo orden en que lo haría un bucle for...in...
. Si el valor de entrada no es un objeto, se convertirá en un objeto.
El método entries()
proporciona el comportamiento Object.entries() de la Biblioteca estándar. Muestra un array de los pares [key, value]
de la propiedad enumerable de un objeto determinado en el mismo orden en que lo haría un bucle for...in...
. Si el valor de entrada no es un objeto, se convertirá en un objeto.
El método freeze()
proporciona el comportamiento Object.freeze() de la biblioteca estándar. Ya no se puede cambiar un objeto inmovilizado; inmovilizar un objeto evita que se le agreguen propiedades nuevas, que se quiten las propiedades existentes y que se modifiquen los valores de las propiedades existentes. freeze()
muestra el mismo objeto que se pasó. Un argumento primitivo o nulo se tratará como si fuera un objeto congelado y se mostrará.
El método delete()
proporciona el comportamiento de operador de eliminación de la biblioteca estándar. Quita la clave determinada del objeto, a menos que este se congele.
Al igual que el operador de eliminación de la biblioteca estándar, muestra true
si el primer valor de entrada (objectInput
) es un objeto que no se congela, incluso si el segundo valor de entrada (keyToDelete
) especifica una clave que no existe. Muestra false
en todos los demás casos. Sin embargo, difiere del operador de eliminación de la biblioteca estándar de las siguientes maneras:
keyToDelete
no puede ser una string delimitada por puntos que especifique una clave anidada.- No se puede usar
delete()
para quitar elementos de un array. - No se puede usar
delete()
para quitar propiedades del alcance global.
Sintaxis
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
Parámetros
Claves de objeto
Parámetro | Tipo | Descripción |
---|---|---|
objetoDeEntrada | cualquiera | El objeto cuyas claves deseas enumerar Si la entrada no es un objeto, se convertirá en un objeto. |
Objetos.valores
Parámetro | Tipo | Descripción |
---|---|---|
objetoDeEntrada | cualquiera | El objeto cuyos valores se deben enumerar Si la entrada no es un objeto, se coercionará a un objeto. |
Objetos.entries
Parámetro | Tipo | Descripción |
---|---|---|
objetoDeEntrada | cualquiera | El objeto cuyos pares clave-valor enumerar. Si la entrada no es un objeto, se coercionará a un objeto. |
Objeto.freeze
Parámetro | Tipo | Descripción |
---|---|---|
objetoDeEntrada | cualquiera | El objeto que se congelará. Si la entrada no es un objeto, se tratará como un objeto congelado. |
Objeto.delete
Parámetro | Tipo | Descripción |
---|---|---|
objetoDeEntrada | cualquiera | El objeto cuya clave se debe borrar. |
claveToDelete | string | La clave de nivel superior que se borrará. |
Ejemplo
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
Muestra un objeto que proporciona métodos para interactuar con promesas.
Las promesas son funcionalmente equivalentes a las de JavaScript. Cada instancia tiene tres métodos que muestran una promesa, lo que permite realizar más acciones cuando una se establece:
.then()
: Maneja los casos resueltos y rechazados. Toma dos devoluciones de llamada como parámetros: una para el caso de éxito y otra para el de falla..catch()
: Controla solo los casos rechazados. Toma una devolución de llamada como parámetro..finally()
: Proporciona una forma de ejecutar el código, independientemente de si la promesa se resolvió o rechazó. Toma una devolución de llamada como parámetro que se invoca sin argumento.
Una variable que muestra una promesa es igual al valor resuelto de la promesa o
false
si la promesa se rechaza.
Ejemplo
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
Muestra una promesa que hace lo siguiente:
- se resuelve cuando se resuelven todas las entradas
- Se rechaza cuando se rechaza alguna de las entradas.
Sintaxis
Promise.all(inputs);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
inputs |
Matriz | Un array de valores o promesas. Si una entrada no es una promesa, esta se pasa como si fuera el valor resuelto de una promesa. Genera un error si la entrada no es un array. |
Ejemplo
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: ''}]
});
Permisos asociados
Ninguno
Promise.create
Crea una promesa que sea funcionalmente equivalente a una promesa de JavaScript.
Sintaxis
Promise.create(resolver);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
resolver |
function | Una función que se invoca con dos funciones: resolver y rechazar. La promesa que se muestra se resolverá o rechazará cuando se invoque el parámetro correspondiente. Muestra un error si el agente de resolución no es una función. |
Ejemplo
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
Permisos asociados
Ninguno
API de prueba
Estas APIs funcionan con pruebas de JavaScript de zona de pruebas a fin de compilar pruebas para plantillas personalizadas en Google Tag Manager. Estas APIs de prueba no necesitan una declaración de require()
. [Obtén más información sobre las pruebas de plantillas personalizadas].
assertApi
Muestra un objeto comparador que se puede usar para realizar aserciones con fluidez sobre la API determinada.
Sintaxis
assertApi(apiName)
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
apiName |
string | El nombre de la API que se verificará (la misma string que se pasa a require() )
|
Comparadores
Subject.wasCalled()
Subject.wasNotCalled()
Subject.wasCalledWith(...expected)
Subject.wasNotCalledWith(...expected)
Ejemplos
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
La API de assertThat
se basa en la biblioteca [Truth] de Google. Muestra un objeto que se puede usar para realizar aserciones con fluidez sobre el valor de un sujeto. Si
se produce un error de aserción, la prueba se detendrá de inmediato y se marcará como fallida. Sin embargo, una falla en una prueba no afectará otros casos de prueba.
Sintaxis
assertThat(actual, opt_message)
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
actual |
cualquiera | El valor que se debe usar en las verificaciones de fluidez. |
opt_message |
string | Mensaje opcional para imprimir si la aserción falla. |
Comparadores
Matcher | Descripción |
---|---|
isUndefined() |
Afirma que el sujeto es undefined . |
isDefined() |
Afirma que el sujeto no es undefined . |
isNull() |
Afirma que el sujeto es null . |
isNotNull() |
Afirma que el sujeto no es null . |
isFalse() |
Afirma que el sujeto es false . |
isTrue() |
Afirma que el sujeto es true . |
isFalsy() |
Afirma que el sujeto es falso. Los valores falsos son
undefined , null , false ,
NaN , 0 y '' (string vacía). |
isTruthy() |
Afirma que el sujeto es honesto. Los valores falsos son
undefined , null , false ,
NaN , 0 y '' (string vacía). |
isNaN() |
Afirma que el sujeto es el valor NaN. |
isNotNaN() |
Afirma que el sujeto es cualquier valor además de NaN. |
isInfinity() |
Afirma que el sujeto es infinito positivo o negativo. |
isNotInfinity() |
Afirma que el sujeto es cualquier valor además del infinito positivo o negativo. |
isEqualTo(expected) |
Afirma que el sujeto es igual al valor especificado. Esta es una comparación de valores, no de referencia. Los contenidos de los objetos y arreglos se comparan de forma recursiva. |
isNotEqualTo(expected) |
Afirma que el sujeto no es igual al valor especificado. Esta es una comparación de valores, no de referencia. El contenido de los objetos y arreglos se compara de forma recursiva. |
isAnyOf(...expected) |
Afirma que el sujeto es igual a uno de los valores indicados. Esta es una comparación de valores, no de referencia. El contenido de los objetos y arreglos se compara de forma recursiva. |
isNoneOf(...expected) |
Afirma que el sujeto no es igual a ninguno de los valores especificados. Esta es una comparación de valores, no de referencia. El contenido de los objetos y arreglos se compara de forma recursiva. |
isStrictlyEqualTo(expected) |
Afirma que el sujeto es estrictamente igual (=== ) al valor especificado. |
isNotStrictlyEqualTo(expected) |
Afirma que el sujeto no es estrictamente igual (!== ) al valor especificado. |
isGreaterThan(expected) |
Afirma que el sujeto es mayor que (> ) el valor determinado en una comparación ordenada. |
isGreaterThanOrEqualTo(expected) |
Afirma que el sujeto es mayor o igual que (>= ) el valor determinado en una comparación ordenada. |
isLessThan(expected) |
Afirma que el sujeto es menor que (< ) el valor determinado en una comparación ordenada. |
isLessThanOrEqualTo(expected) |
Afirma que el sujeto es menor o igual que (<= ) el valor determinado en una comparación ordenada. |
contains(...expected) |
Afirma que el sujeto es un array o una string que contiene todos los valores indicados en cualquier orden. Esta es una comparación de valores, no de referencia. El contenido de los objetos y arreglos se compara de forma recursiva. |
doesNotContain(...expected) |
Afirma que el sujeto es un array o una string que no contiene ninguno de los valores especificados. Esta es una comparación de valores, no de referencia. El contenido de los objetos y arrays se compara de forma recursiva. |
containsExactly(...expected) |
Afirma que el sujeto es un array que contiene todos los valores indicados en cualquier orden y no tiene otros valores. Esta es una comparación de valores, no de referencia. El contenido de los objetos y arreglos se compara de forma recursiva. |
doesNotContainExactly(...expected) |
Afirma que el sujeto es un array que contiene un conjunto de valores diferente de los valores especificados en cualquier orden. Esta es una comparación de valores, no de referencia. El contenido de los objetos y arreglos se compara de forma recursiva. |
hasLength(expected) |
Afirma que el sujeto es un array o una string con una longitud determinada. La aserción siempre falla si el valor no es un array ni una string. |
isEmpty() |
Afirma que el sujeto es un array o una string vacía (length = 0). La aserción siempre falla si el valor no es un arreglo ni una string. |
isNotEmpty() |
Afirma que el sujeto es un array o una string que no está vacío (length > 0). La aserción siempre falla si el valor no es un arreglo ni una string. |
isArray() |
Afirma que el tipo del sujeto es un array. |
isBoolean() |
Afirma que el tipo del sujeto es booleano. |
isFunction() |
Afirma que el tipo del sujeto es una función. |
isNumber() |
Afirma que el tipo del sujeto es un número. |
isObject() |
Afirma que el tipo del sujeto es un objeto. |
isString() |
Afirma que el tipo del sujeto es una string. |
Ejemplos
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
Falla inmediatamente la prueba actual e imprime el mensaje dado, si se suministra.
Sintaxis
fail(opt_message);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
opt_message |
string | Texto de mensaje de error opcional. |
Ejemplo
fail('This test has failed.');
mock
La API de mock
te permite anular el comportamiento de las APIs de la zona de pruebas. La API de muestra es segura para usarla en el código de plantilla, pero no funciona cuando no está en modo de prueba. Las simulaciones se restablecen antes de que se ejecute cada prueba.
Sintaxis
mock(apiName, returnValue);
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
apiName |
string | El nombre de la API que se simulará; la misma string que se pasa a require() |
returnValue |
cualquiera | El valor que se muestra para la API o una función a la que se llama en lugar de la API. Si returnValue es una función, se llama a esa función en lugar de la API de Sandboxed. Si returnValue no es una función, se muestra ese valor en lugar de la API de Sandboxed. |
Ejemplos
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
runCode
Ejecuta el código de la plantilla, es decir, el contenido de la pestaña Code en el entorno de pruebas actual con un objeto de datos de entrada determinado.
Sintaxis
runCode(data)
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
data |
objeto | Objeto de datos que se usará en la prueba. |
Valor que se muestra
Muestra el valor de una variable para plantillas variables; muestra undefined
para todos los otros tipos de plantillas.
Ejemplo
runCode({field1: 123, field2: 'value'});