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 la dirección de 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 leerla basta 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. Exporta datos de la app a una hoja para quien trabaja con hojas de cálculo.
- Un paso intermedio. Empieza con la hoja y luego pasa a una base de datos de verdad. 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 son propiedad de 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 las apps, una cuenta de servicio es la opción correcta: 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 la dirección de email de la cuenta de servicio, como lector si es solo lectura, o como editor si necesita 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 de cálculo (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 las lecturas en caché si muchos visitantes ven los mismos datos, para no alcanzar la cuota.
Las llamadas que usarás
De la guía de Google para leer y escribir 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 después de 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, así que nombra la pestaña explícitamente 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 introdujeron en tu app, usa RAW. Con USER_ENTERED, alguien podría enviar una fórmula que se ejecute cuando un compañero abra 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 por 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 te excedes, se devuelve 429: Too many requests (demasiadas solicitudes), y Google recomienda la espera exponencial truncada: esperar más tiempo tras cada intento fallido, con un retardo aleatorio, hasta un máximo. Una sola solicitud 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 los datos de la hoja en caché durante un minuto o más, agrupa las lecturas con batchGet y agrupa las escrituras cuando puedas.
Opciones y compromisos
| 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 con 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 manda |
| Base de datos primero, exportar a la hoja | La app es dueña de los datos; la hoja es un informe | Las ediciones en la hoja no vuelven a la app |
| Herramienta de automatización intermedia | Sin código para flujos sencillos | 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 guardada. 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 también añade una fila a la pestaña «Leads» (fecha, nombre, email, mensaje) usando spreadsheets.values.append con valueInputOption RAW. Si Google devuelve 429, reintenta con espera exponencial; si sigue fallando, mantén el lead 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 incorrectos. Lee la fila de encabezados y mapea 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 permiso 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 espera exponencial
- La app sigue funcionando con elegancia si Sheets no está disponible
- Decidido qué lado 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 a Mythex para que el agente la use mientras construyes, por ejemplo para leer una hoja y construir un panel a partir de ella; según la documentación, 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 su cuenta, 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, tal como se explica en Integrar cualquier API. Si estás creciendo más allá de la hoja, pide al agente que mueva los datos a la base de datos del proyecto y que construya un panel encima.
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: activa la API de Sheets, crea la cuenta de servicio y su clave, y comparte la hoja de cálculo con la dirección de 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 son 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 o 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 por proyecto, y 60 de cada tipo por minuto por usuario y proyecto, sin límite diario. Si se superan, se devuelve un error 429; Google recomienda una espera exponencial truncada (exponential backoff).
¿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.