Código JavaScript
EN ESTE ARTÍCULO
La herramienta Código JavaScript permite ejecutar JavaScript personalizado directamente dentro de tu Automatización. Está diseñada para casos en los que las herramientas estándar no son suficientes, por ejemplo, cuando necesitas realizar cálculos, transformar datos, dividir valores o generar salidas personalizadas antes de enviarlas a los siguientes pasos.
Esta herramienta ofrece flexibilidad para trabajar con datos dentro de una Automatización utilizando la lógica de JavaScript definida por ti.
Cómo Funciona la Herramienta
- Para agregar la herramienta Código JavaScript a tu Automatización, haz clic en el botón “+” en la interfaz.
- A continuación, selecciona Javascript.
- Primero, debes configurar los Input Data. Esto significa crear variables, asignarles un nombre y definir qué valores se asignarán a cada una. Estas variables podrán utilizarse en tu código, junto con cualquier variable nueva que definas dentro del script.
Para cada variable, debes:
- definir un nombre;
- seleccionar un valor de los pasos anteriores.
-
Para agregar más variables, haz clic en Añadir un campo. Esto creará una nueva fila donde podrás especificar el nombre de la variable y configurar su valor. Puedes eliminar las variables (campos) innecesarias si es necesario.
-
A continuación, configura los Output Data. Aquí, especificas manualmente el nombre y el tipo de las variables que deseas obtener como salida. En los siguientes pasos de tu Automatización, podrás utilizar los campos definidos en esta sección.
La configuración de los Output Data es obligatoria, incluso si no has creado nuevas variables en el código.
- Después de esto, escribe tu código JavaScript utilizando las variables que declaraste o crea nuevas variables basadas en ellas.
Albato no garantiza el rendimiento de tu código personalizado y no ofrece soporte para él. Utiliza esta herramienta solo si te sientes cómodo trabajando con JavaScript.
En los siguientes pasos, verás los mismos campos configurados en la sección Output Data y podrás utilizarlos a lo largo de toda tu Automatización.
Si, por cualquier motivo, el código falla durante la ejecución, este paso de la automatización se considerará un error. El registro de ejecución mostrará el mensaje de error devuelto por el motor de JavaScript.
Limitaciones y Seguridad
- La ejecución de JavaScript se realiza en un entorno aislado
- No se permiten solicitudes de red externas
- La función
fetchestá desactivada - Los errores de ejecución interrumpen el paso de la Automatización
Ejemplos de Uso de JavaScript
Caso 1. Restar la Fecha y Hora de Inicio de la Fecha y Hora de Finalización y Devolver el Resultado en Minutos
Este caso de uso es útil cuando necesitas calcular la duración de un evento, como el tiempo de procesamiento de un pedido o la duración de una llamada.
- Entrada: dateStart, dateEnd
- Salida: difMinutes (Number)
dateStart = new Date(dateStart); dateEnd = new Date(dateEnd); let difMinutes = (dateEnd - dateStart) / (1000 * 60);
Caso 2. Dividir DateTime en Valores Separados de Fecha y Hora y Eliminar los Segundos
Utiliza este ejemplo cuando un servicio devuelve un único valor de DateTime, pero el siguiente paso requiere la fecha y la hora como campos separados.
- Entrada: dateTime (Unix timestamp, milisegundos)
- Salida: date (String), time (String)
dateTime = new Date(+dateTime);
function dateEdit(arr) {
return arr.map((el) => {
return el < 10 ? "0" + el : el;
});
}
let date = dateEdit([
dateTime.getDate(),
dateTime.getMonth() + 1,
dateTime.getFullYear(),
]).join(".");
let time = dateEdit([dateTime.getHours(), dateTime.getMinutes()]).join(":");
En el código anterior, utiliza time para que coincida con el campo de salida time. En la captura de pantalla, esta variable aparece como test.
Caso 3. Dividir una String en Varios Valores
Este caso de uso es útil cuando un campo contiene varios valores separados por un delimitador.
- Entrada: value
- Salida: first (String), second (String)
const parts = value.trim().split(/\s+|,|\|/); const first = parts[0]; const second = parts?.[1];
Dividir Varios Valores Utilizando un Espacio Como Delimitador
num4 = num4.trim().split(' ');
let name = num4[0];
let familyname = num4?.[1];
let surname = num4?.[2];
Dividir Valores Utilizando una Coma Como Delimitador
A = A.trim().split("\,");
let num1 = A[0];
let num2 = A?.[1];
Dividir Valores Utilizando el Delimitador “|”
UF_CRM_1669820909984 = UF_CRM_1669820909984.trim().split("\|");
let name = UF_CRM_1669820909984[0];
let surname = UF_CRM_1669820909984?.[1];
Dividir un Nombre Completo en Nombre y Apellido
Utiliza este ejemplo cuando un servicio devuelve un nombre completo como una única string y necesitas dividirlo en campos separados (por ejemplo, nombre y apellido) antes de pasar los datos a los siguientes pasos de tu Automatización.
Entrada: fullName (String)
Salida: name (String), lastname (String)
let [firstName, lastName] = fullName.trim().split(" ");
let name = firstName;
let lastname = lastName;
Caso 4. Analizar Parámetros de Consulta de una URL
Utiliza este ejemplo para extraer parámetros de una string de consulta de URL.
Entrada: refererurl
Salida: parsedGet (String)
function parseQueryParams(url) {
if (!url.includes("?")) return {};
const queryString = url.slice(url.indexOf("?") + 1).split("#")[0];
if (!queryString) {
return {};
}
const queryParams = Object.create(null);
const pairs = queryString.split("&");
for (let i = 0; i < pairs.length; i++) {
if (!pairs[i]) continue;
const pair = pairs[i].split("=");
const key = decodeURIComponent(pair[0].replace(/\+/g, " "));
const value = decodeURIComponent(pair.slice(1).join("=").replace(/\+/g, " "));
if (Object.prototype.hasOwnProperty.call(queryParams, key)) {
if (Array.isArray(queryParams[key])) {
queryParams[key].push(value);
} else {
queryParams[key] = [queryParams[key], value];
}
} else {
queryParams[key] = value;
}
}
return queryParams;
}
const parsedGet = JSON.stringify(parseQueryParams(refererurl));
Utiliza refererurl como variable de entrada en la última línea del código. Define parsedGet como el valor de salida con el tipo String. El resultado es un objeto serializado en JSON.
Puedes modificar el ejemplo y agregar:
const values = Object.values(JSON.parse(parsedGet)).flat(); let one = values[0] || ""; let two = values[1] || "";
También puedes utilizar estos valores como variables de salida con el tipo String.
Caso 5. Limpiar las Etiquetas HTML del Texto
Este ejemplo es útil cuando el contenido de un correo electrónico o mensaje llega en formato HTML y necesita limpiarse antes de continuar con el procesamiento.
- Entrada: html
- Salida: html (String)
let regexp = /<(\/?[^>]+)>|(\n)|(\s{4,})/gm;
html = html.replace(regexp, "").trim();
Caso 6. Convertir Fecha y Hora a Timestamp Unix
Utiliza este ejemplo cuando un sistema externo requiere la hora Unix en lugar de una fecha formateada.
Entrada: amo_datetime (YYYY-MM-DD HH:MM:SS)
Salida: unixTime (Number)
let [date, time] = amo_datetime.split(" ");
let [year, month, day] = date.split("-").map(Number);
let [hours, minutes, seconds] = time.split(":").map(Number);
let unixTime = Math.floor(new Date(year, month - 1, day, hours, minutes, seconds).getTime() / 1000);
El timestamp se devuelve en segundos. La fecha de entrada se interpreta en la zona horaria del entorno de ejecución de JavaScript.
Caso 7. Devolver Diferentes Valores Dependiendo del Día de la Semana
Este ejemplo puede utilizarse para crear Automatizaciones con lógica específica para cada día. Utiliza este ejemplo cuando tu Automatización necesite enviar mensajes diferentes dependiendo del día actual de la semana.
Por ejemplo, puedes configurar la lógica para que se envíe un mensaje el lunes, otro el martes, uno diferente el miércoles y así sucesivamente.
const messages = {
0: "Mensaje del domingo",
1: "Mensaje del lunes",
2: "Mensaje del martes",
3: "Mensaje del miércoles",
4: "Mensaje del jueves",
5: "Mensaje del viernes",
6: "Mensaje del sábado"
};
const result = messages[new Date().getDay()];
Caso 8. Poner en Mayúscula la Primera Letra de Cada Palabra
Utiliza este ejemplo para dar formato a nombres o valores de texto antes de enviarlos a otra aplicación.
Entrada: str
Salida: formatted (String)
function toCapitalLetter(str) {
if (!str) return str;
return str.trim().toLowerCase().split(/\s+/).filter(Boolean).map(w => w[0].toUpperCase() + w.slice(1)).join(" ");
}
const formatted = toCapitalLetter(str);
Caso 9. Analizar Varias Métricas a Partir de una Única String de Texto
Utiliza este ejemplo cuando un servicio devuelve varias métricas en un único campo de texto y necesitas extraerlas en variables de salida separadas (por ejemplo, fecha, pasos, kcal, prot y otras) para utilizarlas en los siguientes pasos de tu Automatización.
- Entrada: input (String)
- Salida: date (String), pasos (String), kcal (String), prot (String), gr (String), carb (String), gym (String), spa (String), sup (String), obs (String)
function parseMetrics(str) {
const result = {};
const dateMatch = str.match(/^\d{2}\/\d{2}\/\d{4}/);
if (dateMatch) {
result.date = dateMatch[0];
}
const rest = str.replace(result.date, '').trim();
const regex = /(\w+):\s([^:]+?)(?=\s\w+:|$)/g;
let match;
while ((match = regex.exec(rest)) !== null) {
const key = match[1];
const value = match[2].trim();
result[key] = value;
}
return result;
}
const parsed = parseMetrics(input);
const date = parsed.date;
const pasos = parsed.pasos;
const kcal = parsed.kcal;
const prot = parsed.prot;
const gr = parsed.gr;
const carb = parsed.carb;
const gym = parsed.gym;
const spa = parsed.spa;
const sup = parsed.sup;
const obs = parsed.obs;
Ahora puedes utilizar la herramienta Ejecutar código JavaScript para realizar cálculos, transformar datos, aplicar formatos y lógica condicional dentro de tus Automatizaciones.
¿Responde esto a su pregunta?