Combinación de correspondencia en Hojas de cálculoDesarrollo y personalización

Un Google Apps Script que envía correos personalizados desde su Gmail a las personas de su hoja de cálculo de Google

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 envía correos personalizados desde su Gmail a las personas de su hoja de cálculo de Google

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

Cuando tiene que escribir el mismo correo a 80 clientes, alumnos o socios con su nombre, fecha o importe, copiar y pegar lleva horas. Este Google Apps Script vive en su hoja de cálculo de Google y envía a cada fila un correo personalizado desde su propio Gmail: rellena {{Name}}, {{Date}} y cualquier otra columna en su plantilla, escribe Enviado y la hora en la fila y se salta las filas ya enviadas, así que puede volver a ejecutarlo sin riesgo. Está pensado para su propia lista de personas que esperan sus correos, no para listas compradas ni envíos masivos en frío. Google limita cuántos correos puede enviar un script al día, menos en un Gmail gratuito que en Google Workspace; el script se detiene al llegar al límite y continúa después. Usted lo instala y lo ejecuta en su cuenta.

Qué incluye

  • Qué recibeUn archivo ZIP con el código de Apps Script y un README que explica cómo pegarlo en su hoja, dar acceso y enviar; el código también se muestra en la página del pedido.
  • Campos personalizadosCualquier columna de la hoja en el asunto y en el texto
  • Desde su propio GmailLas respuestas le llegan a usted, como cualquier correo que envía
  • Marcas de envíoCada fila indica cuándo se envió, así que nada se envía dos veces
  • Dentro de los límites de GoogleSe detiene en el límite diario y continúa después
  • Código legibleCon comentarios, fácil cambiar la plantilla más adelante

Cómo funciona

  1. 1
    TareaUsted envía las columnas de la hoja y el correo que quiere enviar
  2. 2
    CódigoEscribimos el script y la guía para instalarlo
  3. 3
    PruébeloLo pega en una copia de la hoja y envía primero a su propia dirección
  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 y dos o tres filas con nombres y direcciones inventados, el asunto y el texto del correo con los lugares donde van las columnas, y si es texto sin formato o con formato desde un borrador de Gmail. Quiénes son las personas de la lista y cómo llegaron a ella (sus clientes, socios, alumnos), cuántas filas hay aproximadamente y si usa un Gmail gratuito o Google Workspace. Archivos adjuntos, si los hay, y dónde están en su Drive.

Le preguntaremos:

  • ¿A quién escribe?
  • ¿Qué columnas tiene la hoja?
  • ¿Qué debe decir el correo?
  • ¿Gmail gratuito o Google Workspace?

Comparar paquetes

PaquetesBásicoCombinación de correspondencia sencilla16 US$EstándarCombinación de correspondencia con configuración33 US$PremiumHerramienta de combinación de correspondencia67 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

¿Cuántos correos puede enviar al día?

Tantos como Google permita enviar a su cuenta desde un script, que son menos en un Gmail gratuito que en Google Workspace; Google muestra las cifras actuales en su página de cuotas de Apps Script. El script se detiene en el límite y la siguiente ejecución continúa desde la primera fila sin enviar.

¿Puedo enviar a una lista que he comprado?

No. El script es para personas que le conocen y esperan sus correos, como sus clientes o socios. Las listas compradas y los envíos masivos en frío incumplen las normas de Google y pueden hacer que bloqueen su cuenta.

¿Añadirá un enlace para darse de baja?

Puede añadir una línea que pida responder a quien no quiera recibir estos correos, y saltarse las filas que marque como dadas de baja. Para boletines con baja en un clic, es mejor un servicio de email marketing.

¿Tendrán acceso a mi Gmail?

No. Usted pega el código en su propia hoja, y Google le pide a usted, no a nosotros, que le permita enviar correo. Nunca iniciamos sesión en su cuenta.

¿No encontró su respuesta?

Paquetes