JavaScript en zona de pruebas

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