Cómo conectar Google Sheets a tu app
Para conectar Google Sheets a tu app, activa la API de Google Sheets en un proyecto de Google Cloud, crea una cuenta de servicio, comparte la hoja de cálculo con el email de la cuenta de servicio y guarda su clave como secreto del lado del servidor. Tu servidor lee filas con spreadsheets.values.get y añade filas con spreadsheets.values.append. Si los usuarios necesitan conectar sus propias hojas, usa OAuth, y si la hoja es totalmente pública, para leer basta con una clave de API sencilla.
Esta guía cubre qué método encaja, las llamadas que necesitas, las cuotas y los detalles a tener en cuenta, y prompts para un creador de apps con IA. Los datos de Google proceden de su documentación para desarrolladores a septiembre de 2026.
Por qué conectar una hoja
Motivos habituales:
- Mantener el flujo de trabajo del equipo. El personal sigue editando una lista de precios o un calendario en Sheets; la app lo muestra.
- Recoger datos donde la gente ya mira. Los nuevos registros, pedidos o respuestas de formularios llegan como filas.
- Informes. Exportar datos de la app a una hoja para quien trabaja con hojas de cálculo.
- Un paso intermedio. Empezar desde la hoja y pasar después a una base de datos adecuada. Consulta cómo convertir una hoja de cálculo en una app.
Elige cómo se identifica tu app ante Google
La guía de credenciales de Google describe tres tipos:
| Credencial | A qué puede acceder | Ideal para |
|---|---|---|
| Clave de API | Solo datos disponibles públicamente, como archivos compartidos con « Cualquiera con el enlace » | Leer una hoja pública |
| Cuenta de servicio | Datos que pertenecen a tu app, o archivos concretos compartidos con el email de la cuenta de servicio | Que tu app lea y escriba tus hojas |
| ID de cliente OAuth | Los archivos propios de un usuario, tras su consentimiento | Permitir que cada usuario conecte sus hojas |
Para la mayoría de apps, una cuenta de servicio es la opción adecuada: un único conjunto de credenciales, de tu propiedad, con acceso solo a las hojas que compartas explícitamente con ella.
Paso a paso con una cuenta de servicio
- Crea o elige un proyecto de Google Cloud y activa la API de Google Sheets.
- Crea una cuenta de servicio y una clave para ella. La clave es un archivo JSON; trátala como una contraseña.
- Comparte la hoja de cálculo con el email de la cuenta de servicio, como Lector si es solo de lectura o como Editor para escribir. La guía de Google indica que esto se hace desde la pantalla normal de uso compartido.
- Guarda la clave como secreto en tu servidor, por ejemplo
GOOGLE_SERVICE_ACCOUNT_JSON, y el ID de la hoja (la cadena larga de la URL de la hoja) comoSHEET_ID. - Llama a la API desde el servidor con la biblioteca cliente de Google para tu lenguaje.
- Guarda en caché las lecturas si muchos visitantes ven los mismos datos, para no alcanzar la cuota.
Las llamadas que usarás
Según la guía de Google sobre lectura y escritura de valores:
| Método | Qué hace |
|---|---|
spreadsheets.values.get | Lee un rango, como Leads!A1:E |
spreadsheets.values.batchGet | Lee varios rangos en una sola solicitud |
spreadsheets.values.update | Escribe en un rango concreto |
spreadsheets.values.append | Añade filas tras los datos existentes de una tabla |
Los rangos usan la notación A1. Google señala que un rango sin nombre de hoja, como A1:B2, se aplica a la primera hoja; pon siempre el nombre de la pestaña para evitar sorpresas cuando alguien reordene las pestañas.
RAW frente a USER_ENTERED
Las escrituras necesitan un valueInputOption:
- RAW guarda exactamente lo que envías, como texto.
=1+2se guarda como el texto=1+2. - USER_ENTERED trata la entrada como si se hubiera escrito en Sheets: las fechas se convierten en fechas y
=1+2se convierte en una fórmula.
Si escribes texto que los usuarios han escrito en tu app, usa RAW. Con USER_ENTERED, alguien podría enviar una fórmula que se ejecutaría cuando un compañero abriera la hoja.
Cuotas y errores
A septiembre de 2026, la página de límites de la API de Sheets de Google indica:
| Límite | Solicitudes de lectura | Solicitudes de escritura |
|---|---|---|
| Por minuto y proyecto | 300 | 300 |
| Por minuto, por usuario y proyecto | 60 | 60 |
No hay límite diario mientras te mantengas dentro de las cuotas por minuto. Si las superas, aparece 429: Too many requests (demasiadas solicitudes), y Google recomienda un retroceso exponencial truncado: esperar más tiempo tras cada intento fallido, con un retardo aleatorio, hasta un máximo. Una solicitud individual que tarde más de 180 segundos se cancela por tiempo de espera.
En la práctica: no llames a la API en cada visita a una página. Guarda en caché los datos de la hoja durante un minuto o más, agrupa las lecturas con batchGet y agrupa las escrituras cuando puedas.
Opciones y compensaciones
| Enfoque | Ventajas | Inconvenientes |
|---|---|---|
| La hoja como fuente de datos en vivo | El personal edita en una herramienta conocida; no hay pantallas de administración que construir | Cuotas, sin permisos por fila, fácil de romper al renombrar una columna |
| Sincronizar la hoja en una base de datos | Lecturas rápidas y fiables; la app sigue funcionando si Sheets cae | Necesitas un proceso de sincronización y una regla sobre qué lado gana |
| Base de datos primero, exportar a la hoja | La app es dueña de los datos; la hoja es un informe | Los cambios en la hoja no vuelven a la app |
| Herramienta de automatización intermedia | Flujos sencillos sin código | Otra suscripción; más difícil de depurar |
Para cualquier cosa con muchos usuarios o datos sensibles, una base de datos es la mejor fuente de verdad. Consulta qué es una base de datos.
Prompts para tu creador de apps con IA
Leer una hoja:
Muestra la pestaña « Menú » de nuestra hoja de Google en la página del menú. Usa la API de Google Sheets desde el servidor con una cuenta de servicio cuya clave JSON está en el secreto GOOGLE_SERVICE_ACCOUNT_JSON, y el ID de la hoja en SHEET_ID. Lee el rango Menu!A2:D (nombre, descripción, precio, categoría). Guarda el resultado en caché durante 5 minutos. Si la API falla, muestra la última versión en caché. No envíes nunca la clave al navegador.
Escribir filas:
Cuando alguien envíe el formulario de contacto, guárdalo en nuestra base de datos y añade también una fila a la pestaña « Leads » (fecha, nombre, email, mensaje) usando spreadsheets.values.append con valueInputOption RAW. Si Google devuelve 429, reintenta con retroceso exponencial; si sigue fallando, mantén el contacto en la base de datos y reintenta más tarde.
Errores habituales
- Olvidar compartir la hoja con el email de la cuenta de servicio. La API devuelve entonces un error de permisos aunque la clave sea correcta.
- La clave en el frontend o en el repositorio. La clave JSON da acceso a todas las hojas compartidas con ella. Consulta cómo mantener seguras las claves de API.
- Usar USER_ENTERED con la entrada de los usuarios, lo que permite la inyección de fórmulas.
- Llamar a la API en cada solicitud y alcanzar la cuota por minuto con el primer pico de tráfico.
- Depender de las posiciones de las columnas. Alguien inserta una columna y la app lee datos equivocados. Lee la fila de encabezados y asigna por nombre, o bloquea el encabezado.
- Compartir la hoja más de lo necesario. « Cualquiera con el enlace » la hace pública.
- Usar una hoja como base de datos multiusuario. Las escrituras simultáneas y los permisos mal configurados provocan pérdidas o filtraciones de datos.
Lista de comprobación
- API de Sheets activada; cuenta de servicio creada
- Hoja compartida con el email de la cuenta de servicio con el rol mínimo necesario
- Clave e ID de la hoja guardados como secretos del servidor
- Todas las llamadas hechas desde el servidor
- Nombres de pestaña usados en los rangos
- RAW usado para el texto que aportan los usuarios
- Lecturas en caché; errores 429 gestionados con retroceso
- La app se degrada con elegancia si Sheets no está disponible
- Decidido cuál de los dos lados es la fuente de verdad
Google Sheets en Mythex
Mythex tiene dos formas distintas de trabajar con Sheets. Los conectores vinculan tu cuenta de Google con Mythex para que el agente la use mientras construyes, por ejemplo para leer una hoja y crear un panel a partir de ella; la documentación indica que la credencial permanece en el servicio de conexión de Mythex y nunca llega a tu código (consulta Conectores, y aprueba cada permiso que pida Google). Para que la app publicada lea o escriba una hoja por sí sola, la vía fiable es la de esta guía: una clave de cuenta de servicio guardada como secreto del proyecto y llamadas a la API de Sheets desde tu servidor, como en Integrar cualquier API. Si la hoja se te queda pequeña, pide al agente que mueva los datos a la base de datos del proyecto y que construya un panel sobre ellos.
Preguntas
¿Cómo puede mi app leer una hoja de cálculo privada de Google?
La forma habitual es una cuenta de servicio de Google Cloud: activas la API de Sheets, creas la cuenta de servicio y su clave, y compartes la hoja de cálculo con el email de la cuenta de servicio como Lector o Editor. Tu servidor usa la clave, guardada como secreto, para llamar a la API de Sheets.
¿Puedo usar una clave de API de Google para acceder a una hoja de cálculo?
Solo para datos públicos. La guía de credenciales de Google indica que las claves de API sirven para acceso anónimo a datos disponibles públicamente, como archivos compartidos con cualquiera que tenga el enlace. Las hojas privadas necesitan una cuenta de servicio u OAuth.
¿Cuáles son los límites de la API de Google Sheets?
A septiembre de 2026, Google indica 300 solicitudes de lectura y 300 de escritura por minuto y proyecto, y 60 de cada tipo por minuto, por usuario y proyecto, sin límite diario. Si se superan, aparece un error 429; Google recomienda un retroceso exponencial truncado.
¿Debo usar Google Sheets como base de datos de mi app?
Funciona para apps pequeñas y de poco tráfico en las que la gente también edita los datos en la hoja. Con muchos usuarios, escrituras frecuentes, relaciones entre registros o permisos por usuario, una base de datos real es más fiable, y aun así puedes exportar a una hoja.