JavaScript con zona de pruebas es un subconjunto simplificado del lenguaje JavaScript que
proporciona una forma segura de ejecutar la lógica arbitraria de JavaScript desde la etiqueta de Google
de Google Workspace. Para proporcionar un entorno de ejecución seguro, algunos
las funciones de JavaScript se restringen o eliminan. El código JavaScript de zona de pruebas se basa
en ECMAScript 5.1. Algunas características de ECMAScript 6 como las funciones de flecha y
Hay declaraciones disponibles de const
de let
.
Entorno de ejecución global
El código JavaScript para la zona de pruebas no se ejecuta en la ejecución global estándar
entorno como JavaScript normal, por lo que el objeto window
y sus propiedades
no están disponibles. Esto incluye métodos definidos en el alcance global como
encodeURI
o setTimeout
, valores globales, como location
o document
valores globales definidos por secuencias de comandos cargadas. En lugar de estos, existe una require
global
está disponible para todo JavaScript de zona de pruebas que proporcione muchos de estos
funciones. Los valores se pueden leer desde la ventana con el
copyFromWindow
.
Sistema de tipos simplificado
El código de JavaScript de zona de pruebas admite los siguientes tipos: null
, undefined
,
string
, number
, boolean
, array
, object
y function
. Arrays y
los objetos se crean con la sintaxis literal ( [] {}
) y como no hay
acceso al entorno de ejecución global estándar, constructores globales, como
String()
y Number()
no están disponibles. No hay ninguna palabra clave new
en
JavaScript en zona de pruebas, y las funciones no tienen acceso a la palabra clave this
.
También se quitaron algunos métodos de tipo nativo. Consulta la biblioteca estándar para obtener un
una lista exhaustiva de los métodos de tipos nativos admitidos.
Formato personalizado del código de la plantilla
El código escrito para implementar una plantilla personalizada representa el cuerpo de una
función que se ejecutará cada vez que se active tu etiqueta o la variable
y cómo se evalúa. Esta función tiene un solo parámetro de datos (data
) que contiene todos los
configurados en la IU para esa etiqueta o instancia de variable, con las claves configuradas
a los nombres de los parámetros especificados en la plantilla personalizada.
Ejemplo de implementación de la etiqueta del contador
const sendPixel = require('sendPixel');
const encodeUri = require('encodeUri');
const encodeUriComponent = require('encodeUriComponent');
let url = encodeUri(data['url']);
if (data['useCacheBuster']) {
const encode = require('encodeUriComponent');
const cacheBusterQueryParam = data['cacheBusterQueryParam'] || 'gtmcb';
const last = url.charAt(url.length - 1);
let delimiter = '&';
if (url.indexOf('?') < 0) {
delimiter = '?';
} else if (last == '?' || last == '&') {
delimiter = '';
}
url += delimiter +
encodeUriComponent(cacheBusterQueryParam) + '=' + encodeUriComponent(data['randomNumber']);
}
sendPixel(url, data['gtmOnSuccess'], data['gtmOnFailure']);