Albato
  • Language
    Es
    English
    Portuguese
    Spanish
  • Bienvenido al Centro de Ayuda de Albato

    Cómo Usar Código Python en Albato


    EN ESTE ARTÍCULO

    Esta nueva herramienta te permite ejecutar tu propio código personalizado. Esta función es útil para realizar cálculos, generar valores o interactuar con consultas y componentes. Este paso ejecuta tu código Python en un entorno aislado y pasa los resultados al flujo de trabajo. Si prefieres trabajar con JavaScript, usa la herramienta JavaScript Code en su lugar.

     

    Cómo funciona la herramienta

    1. Para añadir una herramienta de código Python a tu conexión automática, añade una acción y selecciona Python.

    phytoncode2.png

    1. Primero, necesitas configurar los Datos de Entrada. Esto significa que creas variables, las nombras y defines qué valores asignar a cada una. Estas variables pueden usarse en tu código, junto con cualquier nueva variable que definas dentro del script.

    phytoncode3.png

    Para cada variable, necesitas:

    • Definir un nombre.
    • Especificar el tipo de dato.
    • Seleccionar un valor de los pasos anteriores.
     
    1. Para añadir más variables, haz clic en Add field (Añadir campo). Esto creará una nueva fila donde puedes especificar el nombre de la variable y configurar su valor. Puedes eliminar cualquier variable (campo) adicional si es necesario.

    phytoncode5.png

    1. Luego, configuras los Datos de Salida. Aquí especificas manualmente el nombre y el tipo de las variables que deseas obtener como salida. En los pasos siguientes de tu conexión automática, podrás usar los campos que has definido en esta sección.

    Configurar los Datos de Salida es obligatorio, incluso si no creaste nuevas variables en el código.

    phytoncode6.png

    Regla

    Si el campo Datos de Salida está definido en la configuración de datos de salida, tu código debe incluir la línea:
    Outputdata = ...

    Sin esta asignación, el paso fallará.
    1. Después de eso, puedes escribir cualquier código Python usando las variables que declaraste o crear nuevas basadas en ellas.
    Importante

    Albato no puede garantizar el rendimiento de tu código personalizado y no puede proporcionar soporte para él. Usa esta herramienta solo si te sientes seguro trabajando con Python.

    El código se ejecuta en un entorno sandbox aislado.

    Para garantizar una ejecución segura, hemos restringido las solicitudes externas y cualquier operación de red. Por ejemplo, las bibliotecas usadas para solicitudes HTTP no pueden usarse. Puedes encontrar la lista completa de limitaciones y módulos disponibles a continuación.
    1. En los pasos siguientes, verás esos mismos campos que configuraste en la sección Datos de Salida y podrás usarlos en toda tu conexión automática.
     

    Limitaciones y seguridad

    • Versión de Python: 3.11
    • Zona horaria del entorno: UTC
    • Límite de memoria: 512 MB
    • Tiempo máximo de ejecución por paso (timeout): 10 segundos
    • Ejecución del código: se ejecuta en un entorno sandbox aislado.

    Dentro de la implementación actual:

    • La instalación de bibliotecas externas no está permitida. Solo están disponibles los módulos de la lista de permitidos (ver más abajo).
    • Las solicitudes externas y cualquier operación de red están bloqueadas (por ejemplo, requests, urllib, socket).
     

    Lista de módulos permitidos

    El paso de Python proporciona acceso solo a módulos de la lista de permitidos aprobada. Los siguientes módulos, entre otros, están permitidos:

    string, re, math, cmath, statistics, random, datetime, calendar, collections, collections.abc, functools, itertools, operator, heapq, bisect, array, copy, json, numpy, csv, base64, binascii, hashlib, hmac, pprint, textwrap, uuid, typing, dataclasses, traceback, decimal, fractions.
     

    Errores y diagnósticos

    Si el paso falla:

    • Verifica si los Datos de Salida están configurados correctamente y si los nombres de las variables de salida coinciden con los nombres que asignas en tu código.
    • Verifica los datos de entrada: asegúrate de que la estructura o el número de líneas sea suficiente. Muchos errores ocurren después del split cuando la cadena de entrada no contiene las líneas esperadas.
    • Asegúrate de que no estás usando módulos restringidos ni realizando solicitudes de red.
     

    Ejemplos de la herramienta de código Python

    Caso 1. Restando DateTime de Inicio del DateTime de Fin y devolviendo el resultado en minutos

    Este caso de uso es útil cuando necesitas calcular la duración de algo, por ejemplo, el tiempo de procesamiento de pedidos, la duración de llamadas o la duración de una reunión. Muchos servicios proporcionan dos marcas de tiempo pero no devuelven la diferencia real, por lo que debes calcularla manualmente. Con Python, puedes convertir fácilmente dos fechas en un único valor numérico y usarlo posteriormente en tu conexión automática para filtros, informes, cálculos de costos o análisis.

    Código:

    from datetime import datetime
    date_start = datetime.fromisoformat(date_start)  # or another format in which the string arrives
    date_end   = datetime.fromisoformat(date_end)
    dif_minutes = (date_end - date_start).total_seconds() / 60
      

    phytoncode7.png

     

    Caso 2. Dividir un DateTime en valores separados de Fecha y Hora + eliminar segundos

    Algunas aplicaciones requieren fecha y hora como campos separados, o puede que necesites escribirlos en Google Sheets/CRM en un formato específico sin segundos.

    Este caso de uso es útil cuando:

    • el servicio devuelve una fecha "desordenada" (Unix, ISO o una cadena sin procesar);
    • necesitas comparar fechas usando solo horas y minutos;
    • quieres estandarizar el formato de fecha para los siguientes pasos de la conexión automática.
    • En este ejemplo, dividimos el valor DateTime entrante en dos campos, fecha y hora, y eliminamos los segundos, manteniendo solo el formato HH:MM.

    Código:

    from datetime import datetime
    date_time_str = date_time.strip()  # input is ALWAYS a string
    if date_time_str.isdigit():
        dt = datetime.fromtimestamp(int(date_time_str) / 1000)
    else:
        try:
            dt = datetime.fromisoformat(date_time_str)
        except ValueError:
            dt = datetime.strptime(date_time_str, "%Y-%m-%d %H:%M:%S")
    def date_edit(arr):
        return [(f"0{el}" if el < 10 else str(el)) for el in arr]
    date_str = ".".join(date_edit([dt.day, dt.month, dt.year]))
    time_str = ":".join(date_edit([dt.hour, dt.minute]))
      

    phytoncode10.png

     

    Caso 3. Limpieza de etiquetas HTML del cuerpo de un correo electrónico

    Algunos servicios envían correos electrónicos o notificaciones en formato HTML, con etiquetas, espacios adicionales o saltos de línea innecesarios. Si estos datos se usan posteriormente en tu conexión automática, por ejemplo, enviados a una tarea, Slack, CRM o a un cliente, pueden verse desordenados e incluso romper el formato.

    import re
    regexp = re.compile(r'<(\/?[^>]+)>|(
    )|(\s{4,})', flags=re.MULTILINE)
    html = regexp.sub('', html).strip()
      

    phytoncode8.png

     

    Ahora puedes usar la herramienta Ejecutar Código Python para cálculos, transformación de datos y limpieza de texto dentro de tu conexión automática. Si tienes alguna pregunta, no dudes en ponerte en contacto con nuestro equipo de soporte en el chat.

    ¿Responde esto a su pregunta?