Google Docs como base de datos. Preparar hoja de cálculo | Oloblogger Hace tiempo comentamos que Google Docs podría usarse como una especie de base de datos. Sería sólo u...

16 de abril de 2012

Google Docs como base de datos. Preparar hoja de cálculo

Hace tiempo comentamos que Google Docs podría usarse como una especie de base de datos. Sería sólo un apaño pero cuando no disponemos de un hosting que nos proporcione este tipo de servicio para gestionar paquetes de información, lo que vamos a ver seguro que nos sirve para hacer algo limitado pero muy similar.

Base de datos - Google Docs
Fuente
Se trataría de construir en primer lugar una hoja de cálculo, para poder almacenar elementos de una manera ordenada. Luego la publicaríamos en formato RSS para, por último, mediante un código JavaScript al efecto, poder leerlos mediante JSON y así poder mostrarlos dónde y cómo queramos.

Esto puede sacarnos de algún que otro apuro y quizás ser útil para montar cosas que ahora mismo ni se nos pasa por la cabeza intentar.

Para que se vea cómo funciona todo esto vamos a ilustrarlo con la creación de una hoja de cálculo con citas informáticas y sus autores, para después mostrar una de ellas de manera aleatoria.

Eso ya lo podíamos hacer metiendo todas las frases en un array JavaScript, pero la ventaja de contar con la hoja de cálculo como soporte es que podremos modificar, añadir o borrar fácilmente todo aquello que queramos desde la hoja, sin necesidad de tocar el script.

Este forma de grabar y recuperar datos la vimos en una entrada sobre cómo crear una galería de imágenes con Google Docs, publicada en Vagabundia y aunque esta está adaptada para este ejemplo, el procedimiento es el mismo.

El resultado que obtendremos será algo cómo esto. Hay 95 citas distintas y es fácil incorporar más ¿alguien se imagina modificando el script para redactarlas?




Crear hoja de cálculo en Google Docs

Crear hoja de cálculo
Comenzamos por crear la hoja de datos accediendo a Google Docs. Tras registrarnos o hacer login, allí es fácil encontrar el menú de creación y la opción Hoja de Cálculo.

Supongo que todos sabéis rellenar una por lo que sólo creo necesario explicar que cada columna será un conjunto de datos homogéneos y que es necesario asignar un título a cada una de ellas.

Ese título es el que nos servirá luego para poder encontrar y recuperar el dato que queremos mostrar mediante la expresión gsx$TITULO.$t;. A alguno puede que le suenen esos símbolos de dólar y esa estructura y es que como hemos dicho, para leer la hoja vamos a publicarla como feed para poder leerla después en formato JSON.

Compartir hoja de cálculo

Tras escribir los títulos, las citas y sus autores, tenemos que hacer esa hoja pública (en modo sólo lectura) para que después podamos tirar de ella desde cualquier otra página.

Títulos hoja de cálculo en Google Docs
Como las imágenes de capturas están reducidas, si alguna no la veis bien os recuerdo que todas se pueden ampliar pinchando en ellas.

Pinchamos en el botón superior que reza Compartir y en la ventana que se abre, Cambiar. En la siguiente ventana tendremos que seleccionar Público en la Web y Guardar. Tras estos pasos la ventana anterior nos mostrará una dirección que es la que dará acceso a esta hoja.

Configuración para compartir Público en la web

Enlace y clave

Este es el que nos generó este ejemplo y la parte importante es la que va tras la palabra key, que cómo podéis adivinar, es la identificación de la hoja. Ese dato tendremos que usarlo más adelante. Si queréis ver la hoja completa para seguir el ejemplo, este es el enlace.

https://docs.google.com/spreadsheet/ccc?key=0AtzEI6cl1Hv6dG9wMHpqcVdqbzJhZjlWQ1VScXFVSmc

Si lo hacéis comprobaréis que sólo podéis ver los datos pero no modificarlos. Esto es porque NO se seleccionó la opción de acceso a edición. Si alguna vez os interesa que cualquiera pueda modificar esos datos, ahí es dónde hay que pinchar, pero para cosas como las que estamos viendo, absteneros de hacerlo o puede que alguien os fastidie la lista intencionada o accidentalmente.

Acceso de edición:


Publicar hoja de cálculo en formato RSS

Ahora vamos a publicar esta hoja como feed. Esa opción está en Archivo ► Publicar en la Web. En la ventana siguiente -abajo reproducida- tenemos que pinchar en Iniciar la publicación. En ese momento se habilita la parte inferior y hay que seleccionar de entre las distintas opciones la de RSS. Se genera un nuevo enlace, este con acceso al feed.


Enlace RSS hoja de cálculo Google Docs


Tutorial completo:

¿Vemos otro post al azar por si le encuentras utilidad o quizás prefieres ser más metódico y suscribirte a nuestras entradas por correo? También puedes imprimir este artículo y por supuesto compartirlo en redes sociales si fue de tu agrado.

Compartir
Copy URL

Y muchos más artículos interesantes si nos sigues en...

follow us in feedly

59 comentarios :

  1. Interesantísimo. Esto es para ver con calma a ver qué provecho se le puede sacar.

    Cuando lea las dos partes que hay publicadas hasta ahora te comento cosas, aunque te aviso que tardaré un tiempo ;)

    ResponderEliminar
    Respuestas
    1. Miedo me das pensando en cuando te pongas en serio con esto :S

      Eliminar
  2. Vaya, pero que tip tan curioso, jamás habría pensado que se puede hacer algo así. Como menciona José, es algo para tomar con calma y detenimiento, para así sacarle el mayor provecho. Gracias por esta información Oloman.

    ResponderEliminar
  3. Hola Oloman, cómo anda? Necesito saber como es una formula, mire le explico: para dividir 2 columnas ejemplo 8 dividido 3, la formula es: =AVERAGE(F26)/(E26) y da 2.66666666666667. Cómo hago para que dee un numero justo, 2,67? O cuando da 2.5 para que dee 2,50?
    Saludos!

    ResponderEliminar
  4. La funcion para redondear es esta. El número tras el punto y coma indica la cantidad de decimales a mostrar:
    =ROUND(F26/C26;2)

    ResponderEliminar
    Respuestas
    1. Muchas gracias! Sólo me faltaría saber como hacer para que el 2,5 dee 2,50, los decimales ya me quedó claro.

      Eliminar
    2. =FIXED(ROUND(F26/C26; 2);2)

      Eliminar
    3. Muchas gracias Oloman!!!

      Eliminar
  5. Me gustaria saber si es posible generar envios de e-mails desde un formulario de google docs de forma automática.

    Saludos

    ResponderEliminar
    Respuestas
    1. Supongo que sí, aunque me da miedo siquiera ponerme a verlo. De publicarlo ni hablamos.

      El método sería con un JavaScript que mediante un bucle fuera leyendo y enviando todas las direcciones.

      Eliminar
    2. Gracias, me referia a si habia algo más sencillo.

      Eliminar
    3. Lo que no quiero es proporcionar un medio para poder hacer spam, que ya hay bastante por este mundo, pero no creo que haya un método más sencillo que leer y enviar automáticamente con una pequeña función JavaScript.

      Eliminar
    4. Sí que se puede hacer esto de un modo relativamente sencillo: las propias hojas googledocs tienen la posibilidad de añadirles código javascript, y dentro del mismo existe ya una función predefinida para el envío de correo (sendMail), que con muy poca programación puede hacer envíos de Correos a direcciones contenidas en celdas de la hoja, y también pueden activarse triggers para que se ejecuten periódicamente o con cada llegada de un formulario. Hay por ahí en la documentación de googledocs algunosperiódicamente funciones ya hechas para esto.

      Eliminar
    5. ¡Mierd...! ¡Lo han puesto demasiado fácil!

      Bromas aparte, gracias por la información

      Eliminar
    6. De todos modos, ya han pensado en el spam, y tienen limitados el número de Correos que puedes enviar al día con esto. Creo que son sólo algunas decenas.

      Eliminar
  6. Muy bueno el post y muy bien explicado. Lo he probado y funciona muy bien. Tan solo un par de comentarios: creo que no hace falta compartir la hoja, basta con publicarla. Y por cierto, para publicarla no hay que hacerlo en formato RSS sino que se publica y queda disponible para todos los formatos y luego puede escogerse el código para acceder a ella en RSS o en cualquier otro formato, o en varios.
    Sí me gustaría poder saber algo mas de esas variables gsx.XXX. Sabes dónde se puede encontrar algo sencillo?
    Saludos y felicidades por el blog

    ResponderEliminar
    Respuestas
    1. Muy participativo. Así me gusta :)

      Sobre la denominación de las variables sólo sé lo que puse en los posts siguientes de esta serie, pero tampoco me parece que pudiera haber mucho más.

      Eliminar
  7. He seguido probando y añado algunos detalles por si a alguien le pueda interesar:
    - con el código indicado se accede a la primera hoja (pestaña) de una hoja de cálculo. Se puede acceder a las otras pestañas cambiando el id "od6" por el de la pestaña requerida: la 2ª es "od7", pero luego no van seguidas. Puede obtenerse el de cada hoja en la ventana de publicación, poniendo 1º que se publique sólo esa hoja y luego viendo su enlace RSS.
    - en los datos a leer no debe haber filas vacías en medio porque en ese caso devuelve valor undefined. Si se puede dar el valor vacío conviene añadir una columna de datos al lado que tenga siempre algo relleno en todas las filas útiles.

    ResponderEliminar
  8. Hola Oloman, he seguido todos los pasos de este tutorial, todo me ha funcionado excepto cuando creo mi propia base de datos he comparado el JSON que me genera mi hoja de datos con la que pusiste como ejemplo y veo que mi problema esta en definir los titulos de la hoja de calculo, se que es una bobada pero no he dado con el chiste podrias hacerme el favor de decirme como lo hago, mil gracias!!!

    ResponderEliminar
  9. ok, oloman ya lo solucione el problema era que estaba tomando mal la direccion del url!!!

    ResponderEliminar
  10. hola, tengo una duda, realice un formulario google, como hago para que el que tenga acceso al mismo, al introducir la cedula sea comparado con mi base de dato y de no estar le envie un mensaje diciéndole que debe dirigirse a su jefe inmediato para reportar el inconveniente

    ResponderEliminar
    Respuestas
    1. Te contesté en otra entrada que no sabía hacer eso... y sigo igual.

      Eliminar
  11. Oloman, Buen día.
    Soy docente de una escuela pública y estamos viendo la posibilidad de usar una hoja de cálculo para tener todas las calificaciones de todos los niveles y la asistencia de los alumnos. El único problema que tenemos es el siguiente.
    Tenemos 16 grupos desde 1º a 7º grado. Cada grado tiene alrededor de 30 alumnos. Hice la base de datos de cada grado con sus nombres y apellidos. Puse filtros para que cada docente pueda seleccionar su grado y poner las calificaciones y la asistencia. El problema es que si un docente está fitrando la información y deja el filtro puesto por accidente, es imposible sacar el filtro desde otra cuenta.
    La pregunta es: hay alguna forma de trabajar varias cuentas sobre la misma hoja de cálculo al mismo tiempo? tienen que ser si o si filtros?

    ResponderEliminar
    Respuestas
    1. Hola Daniel

      No conozco Google Docs (ahora Drive) a fondo, pero lo que es seguro es que si una hoja está compartida, cualquiera puede modificar cosas y lo que uno cambia, queda para el siguiente. Incluso podrían coincidir dos o mas personas haciendo cambios al mismo tiempo y observarán cómo "mágicamente" se cambias cosas solas. Evidentemente es porque el otro está haciendo cambios al mismo tiempo.

      No sé si te valdrá como solución, pero quizás si usas una página para cada grado, no hará falta filtros y el problema no existirá, haciendo innecesario buscar una solución.

      Las hojas de Google pueden tener varias páginas cada una, al igual que por ejemplo las de Excel. Cada profe accedería a su propia pestaña (página) y listo.

      Eliminar
  12. como haria para que al completar una casilla se completen otras, ejemplo, al introducir un articulo salga en las columnas sucesivas, costo, precio de reventa, porveedor y stock, ponele.
    gracias, no lo hacer en ninguna planilla de calculos y me resolveria las cosas.
    saludos
    simon

    ResponderEliminar
    Respuestas
    1. Google Docs es muy similar a Excel. Sólo añade fórmulas para esas cosas.

      Eliminar
  13. Hola al momento de publicar la pagina no me apareció la opción de enlace RSS

    ResponderEliminar
    Respuestas
    1. Pues no logro adivinar dónde está el error, pues acabo de comprobar que en Google Docs sale este tema igual que cuando hice el artículo y así es. Siguiendo exactamente los pasos que relaté, sale el enlace.

      Eliminar
  14. Como está Compañero, si quiero sacar el promedio de cuatro celdas, pero al hacerlo me da 9, 5 pero en la celda donde coloco el promedio me tira 10, como hago para que me de 9, 5 en la celda en el excel de google dirve.

    Gracias.

    ResponderEliminar
    Respuestas
    1. No lo sé Maicol, pero al igual que Excel tiene fórmulas para hacer el redondeo a enteros, 1 decimal, 2 decimales, etc. supongo que estas de Google tendrán algo parecido.

      Eliminar
  15. Google Drive no me presenta la opcion de publicar como "RSS",
    Hice todo pero ahora no puedo publicarlo. Alguna solución?
    Gracias y saludos

    ResponderEliminar
    Respuestas
    1. Cambio la interface de Google Docs desde que es Google Drive. El botón de Compartir es la clave igualmente, pero ahora el enlace te sale en el apartado "Enlace para compartir"

      Eliminar
    2. Y entonces que Google Drive al no dar la posibilidad de Rss no funciona el srcipt con el nuevo código que entrega Google.
      Alguna solución?
      Saludos cordiales

      Eliminar
    3. Si funciona. Y esta misma entrada sigue funcionando el ejemplo.
      Si pasas al siguiente capítulo (en los enlaces al final del post), verás que en realidad no te hace falta la dirección RSS, sino otra. Lo importante es hacerlo "público".

      Eliminar
    4. Gracias por tu rápida respuesta; lamento decirte que no me funciona y lo mas triste de todo es que he probado de todas formas.
      En este enlace está la página donde pego el script completo, y no lo muestra. Sin embargo si copio el código que me da Google y lo coloco en el navegador, me lo muestra (como página web por supuesto).
      http://saltonline.com.ar/fra.html
      Saludos y a ver si le encuentras el desperfecto ya que yo no doy en el clavo!

      Eliminar
    5. Lo único que puedo ver desde este lado es que la dirección de la hoja de cálculo no existe, así que tendrás que buscar la correcta. Observa el enlace que puse en esta entrada como si lleva a la hoja matriz. Así tendrás que comprobar tú que la dirección es la correcta y luego ya le añades los parámetros para "Leercitas".

      Eliminar
    6. He corregido el error que cometí, ahora lo tengo con el enlace de la hoja de calculo, pero aún así no me funciona el script.
      http://saltonline.com.ar/fra.html
      Muchas gracias y buen finde

      Eliminar
    7. Más cosas que cambiaron. Ya imagino lo que pasa. En el apartado ARCHIVO busca PUBLICAR. Con eso sustituyes lo de "publicar como RSS".

      Eliminar
    8. Eso he realizado, si ves el código fuente de la página verás que está de ese modo.
      http://saltonline.com.ar/fra.html
      Desde la pestaña archivo voy a "publicar en la web" luego te da distintas opciones de extención de archivo, elijo xlsx, y ese es el que tengo en este momento. Lo he probado con y sin value?.
      Otra sugerencia?...
      Agradecido y saludos cordiales
      Antonio Manuel

      Eliminar
    9. Sí, tengo otra. Prueba simplemente "Como página web", pero no olvides luego en el enlace "Contenido publicado y configuración" pinchar también en "Iniciar la publicación".
      Es que coincidiendo con tu consulta he tenido que hacer una "base de datos" de estas y entonces me di cuenta de que ahora era así. La prueba definitiva es que la dirección que pones en el script funcione al ponerla en el navegador.

      Eliminar
    10. Por tu paciencia te estoy muy agradecido.
      he hecho lo que me sugieres pero tampoco funciona el script. Si coloco el código que me entrega Google directamente en el navegador, me muestra la página completa del xlsx, pero no puedo hacer funcionar el script!...
      http://saltonline.com.ar/fra.html

      Mil gracias y seguiremos con el intento

      Antonio Manuel

      Eliminar
    11. No, el código que tienes que usar (la dirección sobre todo) es la que explico en colección de entradas (segundo post, apartado "Leer con JSON y ejecutar scripts") pero sustituyendo sólo el número largo que identifica tu hoja. Una dirección con ese formato que verás allí es la que tienes que poner en tu navegador para comprobar que la hoja ya es pública y que además está "publicada".

      Eliminar
    12. Estimado Oloman:
      He intentado de todas formas, cambiando de publicar como pagina web o como xlsx, no hay caso, no me funciona.
      Si me funcionan ambos cuando coloco directamente en el navegador, mostrándome la hoja de marras.
      Si te fijas en el código fuente, verás que tengo los dos códigos ocultos y ambos funcionan. No así el bendito script. Lo que me da por narices es que tengo otro site donde si funciona, cuando aún se podía extraer el código RSS de Drive.

      Un cordial saludo
      Antonio Manuel

      Eliminar
    13. Algún error cometiste en la dirección de la hoja de cálculo. Mira esto

      En el anterior comentario te dije que miraras cómo se construía la dirección correcta, que está en el siguiente post de esta colección. Si no me equivoco, la tuya sería esta:
      https://spreadsheets.google.com/feeds/list/1BWLx6F7p6lJCsNRX_DLBnROGxCQfnpyPyUPejc96z0Q/od6/public/values?alt=json-in-script&callback=leerCITAS

      Eliminar
    14. Geniooooo!!...eres un genio!...le he dado toda clase de vueltas y nada. Ahora veo donde estaba mi error. Corregido ya funciona.
      Mil gracias nuevamente y mi reconocimiento a tu paciencia para resolver este entuerto.

      Saludos y hasta la próxima
      Antonio Manuel

      Eliminar
  16. Hola, una duda: al copiar una fila y querer pegarla en una hoja de Excel, NO me copia las celdas en blanco y quiero que lo haga, ¿sabrías decirme cómo solucionarlo? Gracias anticipadas. Un saludo.

    ResponderEliminar
    Respuestas
    1. No. Lo siento, CAU. Ni siquiera sabía que sucediera eso.

      Eliminar
  17. Hola a tod@s! Felicitaciones Oloman. Tengo un pequeño problema:
    He realizado una hoja que incluye imágenes con la fórmula =IMAGE (), cuando publico la hoja no aparecen las imágenes. Si en lugar de utilizar la fórmula anterior, uso INSERTAR7IMÁGEN, sí que aparece publicada. El problema es que con la segunda forma, no puedo referenciar la imágen para que cambie según el valor de otra celda. Os agradecería la ayuda. Saludos

    ResponderEliminar
    Respuestas
    1. Tendría que saber exactamente que código usaste para todo, el HTML, la lectura de la hoja, el JavaScript, cómo organizaste la hoja... pero así con lo que me cuentas te puedo anticipar que lo más fácil es meter lo leído con innerHTML. Si es así, en la celda es suficiente con poner el HTML: <img src="direccion.jpg"/>

      Eliminar
  18. Tengo una hoja de calculo donde la gente ingresa un código de usuario y otros datos en su correspondiente formulario. Como puedo hacer para que solo vean los ingesos que se correspinden a su usuario o mail. Ven toda la hoja aunque no la pueden editar.... gracias

    ResponderEliminar
    Respuestas
    1. Lo desconozco Carlos. Los temas de privacidad no sabría cómo hacerlos con este tipo de herramientas.

      Eliminar
  19. Seria posible generar un base de datos, para gestionar el stock de materiales de un almacen con los movimientos de entrada y salida diarios???

    Muchas Gracias

    ResponderEliminar
    Respuestas
    1. Posible sí, pero sólo como sucedáneo de un auténtico programa de gestión de stock. En realidad esto es una hoja de cálculo, así que sólo podrías hacer lo que cualquier Excel te permitiría hacer.

      Eliminar
  20. Muy interesante y útil, sin embargo me surge una duda, ¿se puede hacer una búsqueda refinada? por ejemplo escribiendo el nombre del autor y que nos de la frase de él

    ResponderEliminar
    Respuestas
    1. Se puede, aunque hay que personalizar el código según los filtros que se deseen usar y los "campos" que se quieran mostrar. No hay una solución universal.

      En este blog tienes un ejemplo funcionando con ese sistema. Salvo la página de Inicio, el contenido de todas las demás páginas muestran la información cargado desde una hoja Drive, según los filtros seleccionados.

      Aquí tienes otro ejemplo más. En este caso el filtro es el año y la información se carga en función de ese dato.

      Eliminar