Fuente |
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
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.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.
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.Tutorial completo:
- Google Docs como base de datos. Preparar hoja de cálculo
- Google Docs como base de datos. Leer y mostrar con JavaScript
- Google Docs como base de datos. Frases informáticas aleatorias
¿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.
Interesantísimo. Esto es para ver con calma a ver qué provecho se le puede sacar.
ResponderEliminarCuando lea las dos partes que hay publicadas hasta ahora te comento cosas, aunque te aviso que tardaré un tiempo ;)
Miedo me das pensando en cuando te pongas en serio con esto :S
EliminarVaya, 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.
ResponderEliminarLa funcion para redondear es esta. El número tras el punto y coma indica la cantidad de decimales a mostrar:
ResponderEliminar=ROUND(F26/C26;2)
=FIXED(ROUND(F26/C26; 2);2)
EliminarMe gustaria saber si es posible generar envios de e-mails desde un formulario de google docs de forma automática.
ResponderEliminarSaludos
Supongo que sí, aunque me da miedo siquiera ponerme a verlo. De publicarlo ni hablamos.
EliminarEl método sería con un JavaScript que mediante un bucle fuera leyendo y enviando todas las direcciones.
Gracias, me referia a si habia algo más sencillo.
EliminarLo 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.
EliminarSí 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¡Mierd...! ¡Lo han puesto demasiado fácil!
EliminarBromas aparte, gracias por la información
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.
EliminarMejor :)
EliminarMuy 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.
ResponderEliminarSí 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
Muy participativo. Así me gusta :)
EliminarSobre 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.
He seguido probando y añado algunos detalles por si a alguien le pueda interesar:
ResponderEliminar- 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.
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!!!
ResponderEliminarok, oloman ya lo solucione el problema era que estaba tomando mal la direccion del url!!!
ResponderEliminar:)
Eliminarhola, 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
ResponderEliminarTe contesté en otra entrada que no sabía hacer eso... y sigo igual.
EliminarOloman, Buen día.
ResponderEliminarSoy 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?
Hola Daniel
EliminarNo 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.
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.
ResponderEliminargracias, no lo hacer en ninguna planilla de calculos y me resolveria las cosas.
saludos
simon
Google Docs es muy similar a Excel. Sólo añade fórmulas para esas cosas.
EliminarHola al momento de publicar la pagina no me apareció la opción de enlace RSS
ResponderEliminarPues 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.
EliminarComo 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.
ResponderEliminarGracias.
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.
EliminarGoogle Drive no me presenta la opcion de publicar como "RSS",
ResponderEliminarHice todo pero ahora no puedo publicarlo. Alguna solución?
Gracias y saludos
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"
EliminarY entonces?
EliminarY entonces qué?
EliminarY entonces que Google Drive al no dar la posibilidad de Rss no funciona el srcipt con el nuevo código que entrega Google.
EliminarAlguna solución?
Saludos cordiales
Si funciona. Y esta misma entrada sigue funcionando el ejemplo.
EliminarSi 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".
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.
EliminarEn 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!
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".
EliminarHe 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.
Eliminarhttp://saltonline.com.ar/fra.html
Muchas gracias y buen finde
Más cosas que cambiaron. Ya imagino lo que pasa. En el apartado ARCHIVO busca PUBLICAR. Con eso sustituyes lo de "publicar como RSS".
EliminarEso he realizado, si ves el código fuente de la página verás que está de ese modo.
Eliminarhttp://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
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".
EliminarEs 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.
Por tu paciencia te estoy muy agradecido.
Eliminarhe 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
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".
EliminarEstimado Oloman:
EliminarHe 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
Algún error cometiste en la dirección de la hoja de cálculo. Mira esto
EliminarEn 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
Geniooooo!!...eres un genio!...le he dado toda clase de vueltas y nada. Ahora veo donde estaba mi error. Corregido ya funciona.
EliminarMil gracias nuevamente y mi reconocimiento a tu paciencia para resolver este entuerto.
Saludos y hasta la próxima
Antonio Manuel
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.
ResponderEliminarNo. Lo siento, CAU. Ni siquiera sabía que sucediera eso.
EliminarHola a tod@s! Felicitaciones Oloman. Tengo un pequeño problema:
ResponderEliminarHe 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
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"/>
EliminarTengo 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
ResponderEliminarLo desconozco Carlos. Los temas de privacidad no sabría cómo hacerlos con este tipo de herramientas.
EliminarSeria posible generar un base de datos, para gestionar el stock de materiales de un almacen con los movimientos de entrada y salida diarios???
ResponderEliminarMuchas Gracias
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.
EliminarMuy 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
ResponderEliminarSe 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.
EliminarEn 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.