Protección de pagoDetalles
- Los cambios dentro del paquete son gratuitos.
- Si no responde en los 3 días siguientes a la entrega, el trabajo se acepta automáticamente.
El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Ejemplo de resultado
Unir los archivos de ventas mensuales de 9 tiendas en un único informe de Excel
Cómo se ejecuta
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Carpeta: sales/2026-10, 9 archivos encontrados
2026-11-02 09:14:03 INFO shop-01.csv: 1.284 filas
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 filas
2026-11-02 09:14:04 WARN shop-07.csv: 3 filas sin precio omitidas (líneas 88, 412, 913)
2026-11-02 09:14:05 INFO Listo: 10.412 filas -> report-2026-10.xlsx (hojas “Ventas” y “Totales”)
Configuración, no código
Los nombres de columna de cada tienda están en settings.ini, así que una tienda nueva o una columna renombrada es una línea ahí:
[columns]
date = Fecha, Fecha de venta, Día
product = Producto, Artículo, Nombre
quantity = Cant., Cantidad, Uds.
price = Precio, Precio unitario
Una parte del código
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Lee el archivo de una tienda y le da los nombres de columna del informe."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: no hay columna para '{name}' (se buscó {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Archivos: un archivo ZIP con merge_sales.py (310 líneas), settings.ini, requirements.txt y un README sobre cómo instalar Python, ejecutar el script y qué significa cada mensaje del registro. El cliente lo ejecuta en su propio ordenador.
Cliente: una pequeña cadena de 9 papelerías; cada tienda envía sus ventas del mes en un archivo CSV o Excel, con nombres de columna ligeramente distintos. Tarea: un único script que lea todos los archivos de una carpeta, dé a las columnas un mismo formato y genere un solo informe de Excel con todas las ventas y una hoja de totales por tienda.
El cliente y todos los datos son ficticios.
Acerca de este servicio
Formularios de Google puede avisarle de que ha llegado una respuesta nueva, pero no de lo que dice, ni avisar al compañero que lleva esa ciudad o ese servicio. Este Google Apps Script se ejecuta cada vez que alguien envía su formulario y manda un correo con las respuestas bien presentadas: las preguntas en negrita, las respuestas debajo y un enlace a la hoja de respuestas. Desde Estándar elige quién recibe el correo según una respuesta, por ejemplo las solicitudes de Madrid a una dirección y las de Barcelona a otra. Premium puede enviar una confirmación a quien rellenó el formulario, si el formulario pide su correo, y un resumen diario a usted. Los correos salen de su propia cuenta de Google, dentro del límite diario que fija Google. Usted lo instala en su cuenta.
Qué incluye
- Qué recibeUn archivo ZIP con el código de Apps Script y un README que explica cómo añadirlo a su formulario, dar acceso y configurar el activador; el código también se muestra en la página del pedido.
- La respuesta completaCada pregunta y respuesta en el propio correo
- Un asunto clarop. ej., Nueva solicitud: Nombre, Servicio
- A la persona adecuadaDesde Estándar, la dirección elegida según una respuesta
- Desde su cuentaEnviado desde su cuenta de Google, dentro de los límites de Google
- Código legibleCon comentarios, fácil cambiar el correo más adelante
Cómo funciona
- 1TareaUsted envía las preguntas del formulario y quién debe recibir qué
- 2CódigoEscribimos el script y la guía para instalarlo
- 3PruébeloLo añade a una copia del formulario y envía una respuesta de prueba
- 4CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error
Qué necesitamos de usted
Las preguntas de su formulario (una captura o la lista), las direcciones que deben recibir los avisos y, desde Estándar, la regla de quién recibe qué, por ejemplo por ciudad o servicio. El asunto y el texto que quiera en el correo. Para una confirmación a quien rellenó el formulario (Premium), el texto de ese correo y la pregunta que pide su dirección. Si su formulario guarda las respuestas en una hoja de cálculo de Google.
Le preguntaremos:
- ¿Para qué es el formulario?
- ¿Quién debe recibir los avisos?
- ¿Cómo debe ser el correo?
- ¿Algo más que enviar?
Comparar paquetes
| Paquetes | BásicoUn aviso16 US$ | EstándarAvisos con configuración33 US$ | PremiumHerramienta de avisos67 US$ |
|---|---|---|---|
| Plazo | 1 día | 2 días | 3 días |
| Cambios | 1 | 2 | 3 |
| Código | hasta 150 líneas | hasta 400 líneas | hasta 1.000 líneas |
| Archivos de código | 1 | hasta 3 | hasta 8 |
| Archivo de configuración | No | Sí | Sí |
| Mensajes de error claros y registro | No | Sí | Sí |
| Opciones de ejecución y guía para ejecutarlo de forma programada | No | No | Sí |
| Guía de instalación y uso (README) | Sí | Sí | Sí |
| Lenguaje | Google Apps Script | Google Apps Script | Google Apps Script |
| Hacer pedido Básico | Hacer pedido Estándar | Hacer pedido Premium |
Protección de pago
Usted paga al hacer el pedido, pero el dinero solo se libera por un trabajo aceptado.
- Precio fijoEl precio del paquete no cambia después del pago.
- El dinero queda reservadoAl pagar, el importe solo queda reservado. Pasa a Dleex cuando usted acepta el trabajo.
- Revisado antes de la entregaCada resultado pasa un control de calidad antes de llegar a usted, y lo ve en la página del pedido antes de aceptarlo.
- Cambios gratuitosSolicite cambios dentro de su brief tantas veces como permita el paquete.
- Aceptación a los 3 díasSi en los 3 días siguientes a la entrega no acepta el trabajo ni solicita cambios, se acepta automáticamente. Si escribe en el chat del pedido después de la entrega, el pedido queda en espera; cuando le respondamos, podremos reiniciar el plazo de 3 días y se lo indicaremos en el chat.
- Rehacer el trabajo o reembolso totalSi el resultado no se ajusta a su brief y los cambios no lo resolvieron, o el trabajo tarda más del doble de su plazo, escriba en el chat del pedido: rehacemos el trabajo o le reembolsamos el pago íntegro.
Preguntas y respuestas
¿Puede enviar una confirmación a la persona?
En Premium, sí, si su formulario pide su dirección de correo. El correo sale de su cuenta de Google, así que se lee como cualquier correo suyo.
¿Funcionará si el formulario está en la cuenta de otra persona?
El script tiene que añadirlo un editor del formulario, y los correos salen entonces de la cuenta de esa persona. El README explica los pasos.
¿Puede enviar un SMS o un mensaje de chat en su lugar?
Esta oferta envía correos. Un mensaje a un servicio con API pública, como un canal de Slack mediante su webhook entrante, puede añadirse dentro de su paquete si usted configura ese webhook.
¿Tendrán acceso a mi formulario?
No. Usted añade el código y le da acceso en su propia cuenta. Nos basta con una captura de las preguntas.
¿No encontró su respuesta?