Ir al contenido principal

Herramientas de Darwin: Código JavaScript

S
Escrito por Support Team

La herramienta de código JavaScript permite ejecutar código JavaScript personalizado directamente en la automatización. Está diseñada para casos en los que las herramientas estándar no son suficientes, por ejemplo, cuando se necesitan realizar cálculos, transformar datos, dividir valores o generar resultados personalizados antes de pasarlos a los siguientes pasos.

Esta herramienta te brinda la flexibilidad de trabajar con datos dentro de una automatización utilizando la lógica JavaScript que tú mismo defines.


Cómo funciona la herramienta

  1. Para agregar la herramienta de código JavaScript a su automatización, haga clic en el botón "+" en su interfaz. Luego, seleccione Código.

  2. Selecciona JavaScript y haga clic en "Continue"

  3. Primero, debes configurar los datos de entrada . Esto significa crear variables, nombrarlas y definir los valores que se asignarán a cada una. Estas variables se pueden usar en tu código, junto con cualquier variable nueva que definas dentro del script.

    • Para cada variable, debes:

      • definir un nombre;

      • Seleccione un valor de los pasos anteriores.

    Para añadir más variables, haz clic en «Añadir campo» . Se creará una nueva fila donde podrás especificar el nombre de la variable y configurar su valor. Si es necesario, puedes eliminar las variables (campos) que no necesites.

  4. A continuación, configure los datos de salida . Aquí, especifique manualmente el nombre y el tipo de las variables que desea obtener como resultado. En los siguientes pasos de su automatización, podrá utilizar los campos que ha definido en esta sección.

    Configurar los datos de salida es obligatorio, incluso si no ha creado ninguna variable nueva en el código.

  5. Después, escribe tu código JavaScript utilizando las variables que has declarado o crea otras nuevas a partir de ellas.

  6. En los siguientes pasos, verá los mismos campos que configuró en la sección Datos de salida y podrá utilizarlos en toda su automatización.

  7. Si, por cualquier motivo, el código no se ejecuta correctamente, este paso de la automatización se considerará un error. El registro de ejecución mostrará el mensaje de error devuelto por el motor JavaScript.

Limitaciones y seguridad

  • La ejecución de JavaScript se realiza en un entorno aislado.

  • No se permiten solicitudes de red externas.

  • fetch está desactivado.

  • Los errores de ejecución detienen el paso de automatización.

Ejemplos de ejecución de código 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 resulta útil cuando se necesita 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: diffMinutes (Number)

    dateStart = new Date(dateStart); dateEnd = new Date(dateEnd); let difMinutes = (dateEnd – dateStart) / (1000 * 60);
    case1.png

Caso 2. Dividir la fecha y hora en valores de fecha y hora separados y recortar los segundos.

Utilice este ejemplo cuando un servicio devuelva un único valor DateTime, pero el siguiente paso requiera que la fecha y la hora sean campos separados.

  • Entrada: dateTime (Unix timestamp)

  • 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 test = dateEdit([dateTime.getHours(), dateTime.getMinutes()]).join(“:”);

case2.png

Case 3. Splitting a string into multiple values

Este caso de uso resulta ú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 usando 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

Utilice este ejemplo cuando un servicio devuelva un nombre completo como una sola cadena y necesite dividirlo en campos separados (por ejemplo, nombre y apellido) antes de pasar los datos a los siguientes pasos de su automatización.

  • Entrada: fullName (String)

  • Salida:name (String), lastname (String)

let [firstName, lastName] = fullName.trim().split(" ");
let name = firstName;
let lastname = lastName;
case3.png

Case 4. Parsing query parameters from a URL

Utilice este ejemplo para extraer parámetros de una cadena de consulta URL.

  • Entrada: fullName (String)

  • Salida:name (String), lastname (String)

function parseQueryParams(url) { 
const queryString = url.split(“?”)[1];
if (!queryString) {
return {};
}
const queryParams = {};
const pairs = queryString.split(“&”);
for (let i = 0; i < pairs.length; i++) {
const pair = pairs[i].split(“=”);
const key = decodeURIComponent(pair[0]);
const value = decodeURIComponent(pair[1] || “”);
if (queryParams.hasOwnProperty(key)) {
if (Array.isArray(queryParams[key])) {
queryParams[key].push(value);
} else {
queryParams[key] = [queryParams[key], value];
}
} else {
queryParams[key] = value;
}
}
return queryParams;
}
const parsedGet = parseQueryParams(url);

Reemplaza el valor de entrada con url en la última línea del código. Establece parsedGet como valor de salida con el tipo StringArray.

Puedes modificar el ejemplo y añadir:

let one = parsedGet[0]; let two = parsedGet[1];

También puede utilizar estos valores como variables de salida de tipo String.

Caso 5. Limpieza de etiquetas HTML del texto

Este ejemplo resulta útil cuando el contenido de un correo electrónico o mensaje llega en formato HTML y necesita ser limpiado antes de su posterior procesamiento.

  • Entrada: html

  • Salida: html (String)

    let regexp = /<(\/?[^>]+)>|(\n)|(\s{4,})/gm;
    html = html.replace(regexp, ”).trim();

Caso 6. Conversión de fecha y hora a marca de tiempo Unix.

Utilice este ejemplo cuando un sistema externo requiera la hora Unix en lugar de una fecha formateada.

  • Entrada: amo_datetime (YYYY-MM-DD HH:MM:SS)

  • Salida: unixTime (Number)

    let [fecha, hora] = amo_datetime.split(” “); 
    let [año, mes, día] = date.split(“-“).map(Número);
    let [horas, minutos, segundos] = time.split(“:”).map(Número);
    let ls_deadline_unix = new Date(año, mes – 1, día, horas, minutos, segundos).getTime();

Caso 7. Devolver valores diferentes según el día de la semana.

Este ejemplo se puede usar para crear automatizaciones con lógica específica para cada día. Úselo cuando su automatización necesite enviar mensajes diferentes según el día 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 resultado = mensajes[new Date().getDay()];

Caso 8. Poner en mayúscula la primera letra de cada palabra.

Utilice este ejemplo para dar formato a nombres o valores de texto antes de enviarlos a otra aplicación.

  • Entrada: str Output: formatted (String)

function toCapitalLetter(str) {
if (!str) return str;
return str.trim().toLowerCase().split(" ").map(w => w[0].toUpperCase() + w.slice(1)).join(" ");
}
const formatted = toCapitalLetter(str);

¿Ha quedado contestada tu pregunta?