![Logo de fjmduran](https://res.cloudinary.com/dwufakumj/image/upload/v1705592904/fjmduran.com/favicon_a79b6y.png)
Usando Google Sheets como backend y base de datos
El tiempo es oro.
En las Navidades de 2022 programé para mi hija un juego a lo Kahoot donde tienes que escoger la respuesta correcta a una pregunta.
Lo programé específicamente para inglés porque en esas Navidades fue la nota menos buena que obtuvo y quise ayudarla con el juego.
Como recompensa, programé en el juego que muestre un poni (sus dibujos animados favoritos) aleatorio cuando consigue 10 respuestas correctas, así consigo que se motive a seguir jugando.
Y FUNCIONA, por ver a todos los ponis se pasa bastantes minutos jugando.
Ni le daba ni le doy mucha importancia a su nota de inglés, ya que con su edad estaban aprendiendo a leer y escribir y creo que el aprendizaje de un nuevo idioma debería ser solo escuchando y hablando, tal como aprenden a hablar cuando son bebés y no escribiendo que ahí es donde se equivocaba.
El tema es que en inglés no es tan fácil escribir como es en español, ya que tu escuchas un sonido en español y lo escribes tal cual, siempres es así.
Sí, sí... la h, la b y la v...
Tú me entiendes.
En inglés no es así, es más complejo.
Me imagino que por este motivo son tan populares los concursos de deletrear que vemos en algunas series y películas americanas.
Bien, a lo que voy.
Las preguntas y respuestas las tengo escritas en un archivo JSON y cada vez que quiero añadir preguntas nuevas o editar alguna tengo que modificar el JSON y subirlo a mi servidor de producción.
He conseguido una forma de hacer esto sin esfuerzo.
Lo que he hecho es usar una hoja de cálculo de Google (Google Sheet) como sustituto de ese archivo JSON y de esta manera, editando mi hoja de cálculo se actualiza el juego instantáneamente.
Si me sueles leer tendrás un perfil técnico y entonces seguro que te gustan las hojas de cálculo. a mí me encantan.
Fácilmente me ahorro con esto 2 minutos por cada actualización.
Resumiendo, te voy a enseñar cómo consumir desde tu aplicación datos de una hoja de cálculo de Google, la usaremos como una especie de base de datos.
Por cierto, aquí te dejo el juego de preguntas y respuestas.
Al turrón...
Crear hoja de cálculo de Google (Google Sheet)
Ve a tu Google Drive y ...
![crear nueva google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718705597/blog/google-sheet/image_xsthha.gif)
Escribe los datos que necesites teniendo en cuenta qué:
- Cada fila será un registro
- Para usarlos como JSON y poder darle nombre a las propiedades, en la primera fila debe llevar los nombres que quieras darle a los campos del objeto JSON que se va a devolver. Te recomiendo que sean nombres válidos para JavaScript (funcionarán igual en otro caso, pero no podrías acceder a ellos en el formato objeto.nombrePropiedad, sino en el formato objeto["nombrePropiedad"]
- Puedes tener varias hojas con datos dentro del archivo (varias pestañas).
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718718958/blog/google-sheet/sheet_qlbrbp.jpg)
Crear enlace a nuestra hoja de cálculo
En la esquina superior derecha verás un botón de compartir
Si lo pulsas verás la opción de copiar el link.
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718706577/blog/google-sheet/share_cyn2fy.jpg)
Habilitar la API de Google Sheet
Para habilitar la API de Goole Sheet tiene que abrir la consola de Google para desarrolladores.
Crea un nuevo proyecto, en mi caso para este ejemplo he creado uno llamado test-with-google-sheet
Navega hasta las API, busca la API de Google Sheet y actívala.
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718708647/blog/google-sheet/01_csnugc.jpg)
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718708649/blog/google-sheet/02_onywkq.jpg)
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718708649/blog/google-sheet/03_whozal.jpg)
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718708649/blog/google-sheet/04_isudn2.jpg)
Obteniendo una API KEY
En el panel lateral derecho ve a API y servicios y a Credenciales.
Creas una y le pones las restricciones que quieras.
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718711202/blog/google-sheet/10_ahpg83.jpg)
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718711208/blog/google-sheet/11_emotp9.jpg)
Montando nuestro endpoint de acceso a nuestra hoja de Google Sheet
El endpoint de acceso a los datos de nuestra hoja de cálculo de Google Sheet tendrá el siguiente formato:
https://sheets.googleapis.com/v4/spreadsheets/[ID-NUESTRA-HOJA]/values/[RANGO]?key=[API-KEY]
- [ID-NUESTRA-HOJA]; el identificador de la hoja de cálculo
- [RANGO]; rango de nuestra hoja que se define de la siguiente como
NombreHoja|Celda1:Celda2
- [API-KEY]; es la clave de la API que acabamos de generar
Te dejo un screenshot de una petición a una de mis hojas con Postman.
![google sheet](https://res.cloudinary.com/dwufakumj/image/upload/v1718718695/blog/google-sheet/postman_chxlye.jpg)
Hasta luego 🖖