Pricing

Cómo Conectar MySQL a Google Sheets

Read this guide in English →

JDBC URLjdbc:mysql://HOST:3306/DATABASE ?useSSL=true&characterEncoding=UTF-8Apps Script · JDBCconst conn = Jdbc.getConnection(url, user, pass);const rs = conn.createStatement() .executeQuery("SELECT * FROM orders");sheet.appendRow(row); // → Google Sheets5,280rows importedsynced
JW
James Whitfield

Apps Script con JDBC, exportaciones CSV, IMPORTDATA y complementos no-code comparados, con las cadenas de conexión exactas para cada proveedor cloud (RDS, PlanetScale, Cloud SQL, Azure), actualización programada, escritura bidireccional y un agente de IA que escribe el SQL por ti.

MySQL es el motor de una parte enorme del software en producción, backends de e-commerce, apps SaaS, herramientas internas, y sin embargo, llamativamente, Google Sheets no tiene un connector nativo para MySQL. Así que cada equipo que quiere datos MySQL en vivo en un spreadsheet termina eligiendo entre las mismas cuatro opciones: un Google Apps Script con JDBC, una exportación CSV desde la CLI, un hack con IMPORTDATA contra una API pública, o un complemento de terceros.

Esta guía recorre las cuatro, con los trade-offs que realmente importan , límites de tiempo de ejecución, semántica de refresh, escritura bidireccional, costo, para que elijas la correcta para tu situación. Versión corta: CSV para extracciones únicas, Apps Script para flujos personalizados de un solo desarrollador, Brooked para todo lo demás. La versión larga está abajo.

Comparación rápida: 4 formas de llevar MySQL a Google Sheets

MétodoCostoSetupActualizaciónBidireccionalCódigoIdeal para
Apps Script + JDBCGratis1–2 horasActivador temporalDIYRequeridoFlujos personalizados de un solo desarrollador
CSV via MySQL CLI / WorkbenchGratis5 min por extracciónManualNoCLICapturas únicas, sin necesidad de freshness
IMPORTDATA contra endpoint públicoGratis · build infraVarios días (build API)Pull cada ~1hNoAPI + SQLCasi nunca, la trampa que parece simple
Complemento BrookedFree tier · Pro $29/usuarioMenos de 5 min15 min / horario / diarioNingunoEquipos que quieren que siga funcionando, RDS, PlanetScale, Cloud SQL

Método 1, Google Apps Script con JDBC

Google Apps Script incluye un servicio Jdbc nativo que conecta directamente a MySQL. Esta es la ruta gratuita y code-first, la correcta si te sientes cómodo escribiendo un script pequeño, solo necesitas un puñado de extracciones, y estás dispuesto a mantener los detalles de la conexión.

Abre tu Google Sheet, haz clic en Extensiones → Apps Script, pega lo siguiente y reemplaza los placeholders con tus propios valores:

Apps Script
function importMySQLToSheet() {
  const url = 'jdbc:mysql://HOST:3306/DATABASE?useUnicode=true&characterEncoding=UTF-8&useSSL=true';
  const conn = Jdbc.getConnection(url, 'USERNAME', 'PASSWORD');
  const stmt = conn.createStatement();
  const rs = stmt.executeQuery('SELECT id, name, revenue FROM orders WHERE created_at > NOW() - INTERVAL 30 DAY');

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clearContents();

  const meta = rs.getMetaData();
  const cols = meta.getColumnCount();
  const headers = [];
  for (let c = 1; c <= cols; c++) headers.push(meta.getColumnName(c));
  sheet.appendRow(headers);

  while (rs.next()) {
    const row = [];
    for (let c = 1; c <= cols; c++) row.push(rs.getString(c));
    sheet.appendRow(row);
  }

  rs.close();
  stmt.close();
  conn.close();
}

Guarda y haz clic en Run. Google pedirá permisos la primera vez. Para hacerlo recurrente, añade un activador temporal en el menú de Apps Script (Triggers → Add trigger → Time-based → elige horario/diario).

Pros: Gratis. Totalmente personalizable. Vive en tu propia cuenta de Google, sin servicio de terceros.

Contras: El script se mata a los 6 minutos de ejecución, lo cual es un problema para cualquier consulta que escanee volúmenes reales. Tu instancia MySQL tiene que aceptar tráfico desde los rangos IP de Google Apps Script (que cambian). Las credenciales quedan en texto plano en el script a menos que las muevas a Script Properties. Y lo mantienes para siempre, los cambios de schema lo rompen en silencio.

Método 2, Exportación CSV desde MySQL

La ruta de menor fricción para una extracción única. Si solo necesitas un snapshot de algunos datos ahora mismo y nunca vas a volver a mirarlos, esta es la respuesta y no la sobre-ingenieres.

Desde la línea de comandos:

Shell
mysql -h HOST -u USER -p DATABASE -e \
  "SELECT id, name, revenue FROM orders WHERE created_at > NOW() - INTERVAL 30 DAY" \
  --batch --raw \
  | sed 's/\t/,/g' > orders.csv

O desde MySQL Workbench: ejecuta la consulta, haz clic en el ícono Export sobre el panel de resultados, elige CSV. Luego en Google Sheets, haz clic en File → Import → Upload y elige el archivo.

Pros: Cero infraestructura. Cero costo recurrente. Funciona para cualquier petición única.

Contras: Sin automatización. Los datos son un snapshot , están obsoletos en el momento que llegan al sheet. Re-exportar manualmente cada día es exactamente el dolor que Brooked, Supermetrics y Coefficient existen para resolver.

Método 3, IMPORTDATA contra un endpoint MySQL público

Google Sheets incluye las fórmulas IMPORTDATA(url) e IMPORTHTML(url) que pueden traer datos de una URL pública a un sheet. Esto puede funcionar para MySQL, pero solo si primero construyes un pequeño wrapper HTTP público (una API REST, un endpoint de exportación estática) que devuelva CSV.

Realísticamente, casi ningún equipo debería tomar esta ruta. Si ya tienes una API interna estable sobre MySQL, probablemente vas a querer un connector que se autentique apropiadamente. Si no tienes, estás a punto de construir infra para esquivar instalar un complemento. Lo mencionamos solo porque aparece en respuestas a esta consulta y queremos ser honestos sobre por qué es una trampa.

Método 4, Un complemento de Google Sheets (Brooked)

Aquí entra Brooked. Es un complemento gratuito de Google Sheets diseñado específicamente para llevar datos MySQL (y otras 20+ fuentes) a tu spreadsheet con refresco programado, escritura bidireccional y un agente de IA que escribe el SQL por ti.

Brooked se conecta a:

  • Amazon RDS MySQL y Aurora MySQL
  • PlanetScale (vía el protocolo MySQL)
  • Google Cloud SQL for MySQL
  • Azure Database for MySQL
  • Railway, Render, Fly.io managed MySQL
  • MySQL self-hosted 5.7+ y 8.0+ (incluyendo caching_sha2_password)

Paso 1, Instala Brooked

Instala Brooked desde el Google Workspace Marketplace. El free tier incluye 100 importaciones al mes con chat de IA, sin tarjeta de crédito, y tu admin de Google Workspace puede aprobarlo sin proceso de procurement.

Paso 2, Conecta tu base de datos MySQL

Abre la barra lateral de Brooked y haz clic en Add data source → MySQL. Ingresa:

  • Host, hostname o dirección IP de tu base de datos
  • Port, 3306 por defecto
  • Database name
  • Username y password
  • SSL mode, requerido para la mayoría de bases cloud (RDS, PlanetScale, Cloud SQL, Azure)

Las credenciales están cifradas en reposo, nunca se loguean, y nunca se envían a ningún tercero. Para una postura de seguridad limpia, crea un usuario brooked_reader dedicado con privilegios SELECT sobre los schemas que quieras exponer al sheet. Si necesitas sincronización bidireccional, crea un segundo usuario con privilegios INSERT, UPDATE y DELETE en las tablas específicas a las que quieras escribir.

Paso 3, Importa datos al sheet

Haz clic en New import, elige tu conexión MySQL, y selecciona una tabla o escribe una consulta SQL personalizada. Elige el rango de destino (cualquier lugar en cualquier sheet, Brooked no toma la pestaña) y haz clic en Import. Activa Auto-refresh para mantenerlo sincronizado en cadencia de 15 minutos, horaria, diaria o semanal.

Sincronización bidireccional, escribir datos de vuelta a MySQL

Esta es la capacidad que realmente no existe en exportaciones CSV, Apps Script (sin mucho trabajo), o la mayoría de connectors de Sheets. Brooked te deja seleccionar un rango del sheet, elegir la tabla MySQL destino, y elegir el modo de escritura: INSERT, UPDATE, UPSERT (que compila a INSERT … ON DUPLICATE KEY UPDATE), o DELETE.

Patrón común: el equipo de ops gestiona una lista de registros en Sheets (aprobaciones de vendor, overrides manuales de producto, triage de tickets de soporte), y Brooked sincroniza esos cambios de vuelta a la base de datos de la aplicación sin que nadie tenga que tocar la herramienta de admin. Cada escritura queda en un audit log con el diff, el usuario y el timestamp.

Usar el agente de IA con MySQL

Aquí Brooked se separa de los connectors clásicos. Escribe en lenguaje natural: "¿Cuántos pedidos cerramos esta semana, agrupados por estado?" El agente introspecta tu schema de MySQL, identifica que orders tiene una columna status y una created_at, escribe el SQL, lo ejecuta sobre tu base en vivo y entrega el resultado al sheet.

Para análisis más sofisticado (cohortes, retención, análisis estadístico), el agente puede caer en un sandbox de Python con pandas/numpy/scikit-learn, computar el resultado, y devolverlo como un rango del sheet. Zero setup local. Zero notebook que hospedar.

BrookedBrooked AI, MySQL
Live
Ask anything about your MySQL data…

Solución de problemas

Veredicto: qué elegir según tu situación

  • Solo necesito este resultado de consulta una vez

    Elige: CSV vía MySQL CLI

    Por qué: Nativo, gratis, 30 segundos. La respuesta correcta para una extracción única donde el freshness no importa.

  • Quiero una sola consulta recurrente y escribo código

    Elige: Apps Script + JDBC

    Por qué: Gratis y personalizable, pero mantendrás el script y tendrás que cuidar el límite de 6 minutos de ejecución para consultas grandes.

  • Quiero datos MySQL en vivo en muchas consultas sin script

    Elige: Brooked

    Por qué: Editor SQL visual, refresco programado, escritura bidireccional, agente de IA, y los presets de proveedor (PlanetScale, RDS, Cloud SQL, Azure) manejan las particularidades de la cadena de conexión.

  • Quiero hacer preguntas a MySQL en lenguaje natural

    Elige: Brooked

    Por qué: El agente introspecta tu schema, escribe el SQL, lo ejecuta en tu base de datos en vivo, lleva el resultado al sheet, y puede caer en un sandbox de Python para trabajo de cohortes/retención/estadístico.

Preguntas frecuentes

  • ¿Cuál es la forma más rápida de tener datos MySQL en Google Sheets?

    Para una extracción única: mysql -e 'SELECT ...' > result.csv y File → Import en Sheets. Lleva 30 segundos. Para flujos recurrentes: instala Brooked desde el Workspace Marketplace, conéctate con tu host/puerto/usuario/password, ejecuta una consulta, activa Auto-refresh.

  • ¿Funciona Brooked con PlanetScale, Amazon RDS y Azure Database for MySQL?

    Sí. Brooked soporta cualquier endpoint del protocolo MySQL, Amazon RDS MySQL y Aurora MySQL, PlanetScale, Google Cloud SQL for MySQL, Azure Database for MySQL, Railway, Render, y MySQL self-hosted 5.7+ / 8.0+.

  • ¿Y Coefficient o Supermetrics para MySQL?

    Coefficient soporta MySQL en su plan Premium ($83/usuario/mes anual). Supermetrics cubre MySQL vía su connector de Database desde $159/mes. Brooked Pro es $29/usuario/mes con MySQL en todos los tiers.

  • ¿Necesito saber SQL para usar Brooked con MySQL?

    No necesariamente. El agente de IA puede escribir el SQL por ti: introspecta tu schema, traduce tu pregunta en lenguaje natural a una consulta válida, la ejecuta, y trae el resultado al sheet. Para los que escriben SQL, hay un editor visual con autocomplete sobre las tablas y columnas reales de tu MySQL.

  • ¿Puedo escribir datos de vuelta a MySQL desde el sheet?

    Sí. Brooked soporta escritura bidireccional. Selecciona un rango del sheet, elige la tabla MySQL de destino, y el modo de escritura (INSERT, UPDATE, UPSERT, DELETE). Cada escritura queda en un audit log con el diff, el usuario y el timestamp. Crea un usuario brooked_writer con INSERT/UPDATE/DELETE en las tablas específicas para writeback.

  • ¿Cuánto tarda en refrescar una consulta MySQL en Brooked?

    Depende del tamaño del resultado y la latencia de tu MySQL. Consultas que devuelven menos de 10.000 filas suelen tardar 2–5 segundos. Brooked muestra el tiempo de la última ejecución en la barra lateral. Para consultas grandes, prefiere filtrar en SQL antes que importar todo y filtrar en Sheets.

¿Listo para olvidarte del script y las exportaciones CSV?

El free tier de Brooked cubre 100 importaciones al mes con chat de IA incluido, sin tarjeta de crédito. O consulta todos los detalles de la integración MySQL.

Instala Brooked gratis →

Also in Database

More Database guides

Database

How to Connect MySQL to Google Sheets

Apps Script with JDBC, CSV exports, IMPORTDATA, and no-code add-ons compared, with the exact cloud-provider connection strings (RDS, PlanetScale, Cloud SQL, Azure), scheduled refresh, two-way write-back, and an AI agent that writes the SQL for you.

JW
James Whitfield
Read
Database

How to Connect SQL Server to Google Sheets

Import SQL Server query results into Google Sheets, schedule auto-refresh, and write data back, works with Azure SQL, Amazon RDS SQL Server, and self-hosted instances.

JW
James Whitfield
Read

Get your spreadsheet hours back

Brooked sets up in seconds. Your team is querying live data before lunch.

Get started free