Facturas desde Hojas de cálculoDesarrollo y personalización

Un Google Apps Script que convierte filas de su hoja de cálculo de Google en facturas PDF con su plantilla, con un solo botó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 Google Apps Script que convierte filas de su hoja de cálculo de Google en facturas PDF con su plantilla, con un solo botó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 lleva los pedidos o las horas de trabajo en una hoja de cálculo de Google, hacer cada factura a mano supone copiar el cliente, los conceptos y los totales en un documento y guardar un PDF. Este Google Apps Script añade un botón a su hoja: rellena su propia plantilla de factura en Google Docs o en Hojas de cálculo con los datos de la fila, guarda un PDF con el nombre que quiera en una carpeta de Drive y vuelve a poner el enlace en la fila. Desde Estándar admite varias líneas de conceptos y numeración; Premium puede enviar cada PDF por correo desde su Gmail a su cliente. Los totales, los impuestos y los textos salen de su hoja y su plantilla: el script hace las cuentas que usted describe y no da asesoramiento fiscal ni contable, así que revise las primeras facturas. Usted lo instala y lo ejecuta en su cuenta de Google.

Qué incluye

  • Qué recibeUn archivo ZIP con el código de Apps Script y un README que explica cómo añadirlo a su hoja y a su plantilla; el código también se muestra en la página del pedido.
  • Su propia plantillaSu diseño, logotipo y textos en Google Docs o Hojas de cálculo
  • PDF a DriveCon número, cliente y fecha en el nombre, en la carpeta que fije
  • Enlace en la filaVe qué filas ya tienen factura
  • NumeraciónDesde Estándar, el siguiente número tomado de su hoja
  • Código legibleCon comentarios, fácil cambiar un campo más adelante

Cómo funciona

  1. 1
    PlantillaUsted envía las columnas de la hoja y su plantilla de factura
  2. 2
    CódigoEscribimos el script y la guía para instalarlo
  3. 3
    PruébeloHace facturas de prueba en una copia de la hoja y revisa las cuentas
  4. 4
    CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error

Qué necesitamos de usted

Los nombres de columna de su hoja con dos o tres filas de datos inventados, su plantilla de factura (un documento de Google Docs o una hoja de cálculo, o el PDF de una factura que envía ahora) con los lugares donde va cada valor, y cómo se calculan los totales: tipo de impuesto, descuentos, moneda y redondeo, según le indique su gestor. Cómo se numeran y nombran las facturas, la carpeta de Drive para los PDF y, para Premium, el texto del correo al cliente.

Le preguntaremos:

  • ¿Qué factura?
  • ¿Qué columnas tiene la hoja?
  • ¿Cómo es su factura?
  • ¿Cómo se calculan los totales?

Comparar paquetes

PaquetesBásicoUna factura cada vez16 US$EstándarFacturas con configuración33 US$PremiumHerramienta de facturación67 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í
LenguajeGoogle Apps ScriptGoogle Apps ScriptGoogle Apps Script
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

¿Serán las facturas legalmente correctas?

El script rellena lo que contienen su plantilla y su hoja y calcula como usted describe. Lo que debe contener una factura en su país lo deciden usted o su gestor; no damos asesoramiento fiscal ni jurídico.

¿Puede enviar las facturas por correo?

En Premium, sí: desde su propio Gmail a la dirección de la fila, dentro del límite diario de envíos que Google fija para su cuenta. Puede desactivar el envío y solo guardar los PDF.

¿Puede cobrar pagos o conectarse con mi programa de contabilidad?

No, crea PDF. Un enlace de pago que ya tenga puede imprimirse en la factura como texto desde su hoja.

¿Tendrán acceso a mi Drive?

No. Usted añade el código a su propia hoja y le da acceso usted mismo. Nunca iniciamos sesión en su cuenta de Google.

¿No encontró su respuesta?

Paquetes