Informe diario por correoDesarrollo y personalización

Un script de Python que crea un breve informe a partir de sus archivos de Excel y lo envía por correo desde su propio buzón

Suele estar listo en 15 minutosCambios incluidosControl de calidad
Paquetes
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.

Un script de Python que crea un breve informe a partir de sus archivos de Excel y lo envía por correo desde su propio buzón

Ejemplo de resultado

Ejemplo del paquete Estándar

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

Si alguien en la oficina abre cada mañana el mismo archivo de Excel, copia los totales y los escribe en un correo, este script de Python puede hacer esa parte. Lee los archivos que indique, como la exportación de ventas de ayer o una hoja de stock en una carpeta compartida, calcula lo que pida (totales, recuentos, medias por tienda o producto, las filas por encima de un límite) y envía un correo breve con una tabla ordenada a las personas que indique, desde su propia cuenta de correo, con el archivo adjunto desde Estándar. Usted pone la contraseña de envío de la cuenta de correo en la configuración; nunca va en el código. Los destinatarios son sus propios compañeros o clientes, muy por debajo de los límites de envío de su servicio de correo. Informa de las cifras de sus archivos; no las comprueba ni las explica.

Qué incluye

  • Qué recibeUn archivo ZIP con el script de Python, un README con instrucciones paso a paso y, desde Estándar, un archivo de configuración con archivos, destinatarios y ajustes de correo; el código también se muestra en la página del pedido.
  • Sus cifrasTotales, recuentos y medias que elija
  • Un correo legibleUna tabla breve que se abre en el móvil
  • Desde su buzónSu propia cuenta de correo, con la contraseña fuera del código
  • Archivo adjuntoDesde Estándar, el archivo de Excel o un resumen de él
  • Código legibleCon comentarios, fácil añadir una cifra más adelante

Cómo funciona

  1. 1
    TareaUsted envía un archivo de muestra y un ejemplo del correo que quiere
  2. 2
    CódigoEscribimos el script y la guía para ejecutarlo
  3. 3
    PruébeloLo ejecuta con solo su propia dirección en la lista
  4. 4
    CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error

Qué necesitamos de usted

Uno de los archivos de Excel de los que sale el informe, reducido a unas filas o con las cifras cambiadas, dónde aparecen los archivos (una carpeta, una unidad compartida) y cómo se llaman, qué debe mostrar el correo (escríbalo como lo haría a mano), quién lo recibe y desde qué cuenta de correo (basta con nombrar el servicio de correo; la contraseña la introduce usted). Cuándo debe enviarse y el ordenador en que se ejecutará: Windows, macOS o Linux.

Le preguntaremos:

  • ¿De qué archivos sale el informe?
  • ¿Qué debe mostrar el correo?
  • ¿Quién lo recibe y cuándo?
  • ¿Dónde se ejecutará?

Comparar paquetes

PaquetesBásicoUn informe16 US$EstándarInforme con configuración33 US$PremiumHerramienta de informes67 US$
Plazo1 día2 días3 días
Cambios123
Códigohasta 150 líneashasta 400 líneashasta 1.000 líneas
Archivos de código1hasta 3hasta 8
Archivo de configuraciónNoSíSí
Mensajes de error claros y registroNoSíSí
Opciones de ejecución y guía para ejecutarlo de forma programadaNoNoSí
Guía de instalación y uso (README)SíSíSí
LenguajePythonPythonPython
Hacer pedido BásicoHacer pedido EstándarHacer 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.
Cómo funciona →

Preguntas y respuestas

¿Enviará el informe cada día por sí solo?

Envía un informe cada vez que se ejecuta. Premium incluye una guía para ejecutarlo cada mañana con el Programador de tareas, cron o launchd; con Básico o Estándar lo ejecuta usted o lo programa por su cuenta. El ordenador tiene que estar encendido a esa hora.

¿Con qué cuentas de correo funciona?

Con la mayoría de servicios que permiten enviar por SMTP, lo que incluye el correo profesional y personal habitual. Algunos piden crear una contraseña de aplicación para esto; el README indica dónde.

Mis archivos están en Hojas de cálculo de Google, no en Excel. ¿Funciona?

Para eso encaja mejor un Google Apps Script dentro de la hoja, que envía desde su Gmail; indíquelo en el brief y lo escribiremos en Apps Script.

¿Puede enviar el informe a mis clientes?

Sí, a personas que lo esperan, como clientes que pidieron una lista diaria de stock. No está pensado para envíos masivos ni para listas que no haya recogido usted.

¿No encontró su respuesta?

Paquetes