Actualizar encuestas recogidas con Google Drive


modificar respuestas formulario google docs¿Has eliminado información de un formulario de Google Drive y los datos siguen apareciendo en el resumen de respuestas?

Hace casi dos años publicamos un script que permitía modificar los datos introducidos y que apareciesen reflejados en las estadísticas.

Desgraciadamente Google sigue sin incluir dicha funcionalidad en su herramienta y, tras las continuas peticiones de ayuda a través del soporte del blog he optado por mejorar el script en Python para que os resulte algo más cómodo su uso 😉

Mejoras

Se ha incluido

  1. obtención de los campos existentes en el formulario (evitando tener que inyectar jQuery en html para obtenerlos)
  2. edición del fichero CSV para evitar al usuario cambiar los nombres de los campos en la primera fila

Procedimiento

  1. Seguiremos los pasos 1 al 4 del artículo original para obtener el fichero CSV (y, opcionalmente, evitar que nadie pueda añadir nuevas respuestas mientras estamos haciendo labores de “mantenimiento” 😉 )
  2. Descargaremos el nuevo script python.
  3. Modificamos el script para indicar
    1. Url del formulario de Google Docs (recomiendo modificar únicamente el ID del formulario, dejando el resto de la dirección web intacta, especialmente el “formResponse” del final que no aparece en la url que has copiado del navegador 😉 )
    2. Ruta al fichero CSV con los datosedición de scripts en python
  4. Lanzaremos el script para que introduzca los datos en nuestro formulario web.

Misión cumplida

Sólo queda esperar que el script termine (esperemos que con éxito jeje).

Me alegra (y enorgullece) que, después de tanto tiempo (prácticamente 2 años), siga siendo de utilidad y que os animéis a contactar vía soporte técnico para comentar vuestras dudas y problemas puesto que

  • me ayuda a conocer los problemas que plantea
  • introducir mejoras como las presentadas en esta nueva versión

Desde aquí daros las gracias y animaros a seguir comentando todo aquello que consideréis que merece la pena mejorar.

29 comentarios en “Actualizar encuestas recogidas con Google Drive

  1. Me a sido de mucha ayuda… Estaba haciendo una encuesta y un gracioso agrego 33 votos a una opción de la encuesta, gracias este post pude borrar esos datos y seguir con mi encuesta como si nada hubiera pasado 😀

  2. No se si tu script me podría servir, te explico mi problema, realicé un formulario con una cuenta de gmail, en principio no iba a ser nada importante pero luego comencé a aplicarle fórmulas, reglas y he realizado algo que realmente funciona, automatizado y sobre todo útil, sin embargo fui tan ingenuo que lo hice en mi drive personal y lo quiero trasladar a la cuenta de la empresa.

    Para ello he realizado una copia del formulario original a la cuenta de la empresa y claro, las respuestas del formulario se tornan a “0”.

    He obtenido la id del formulario y la he copiado dentro del script, he comprobado que al copiar la ruta en el navegador me salga la ventana de insertar una nueva entrada del formulario, ejecuté el script y comenzaron a salir los puntos, así que en principio la ejecución ha sido correcta pero el formulario sigue a 0, ¿alguna idea?

    Para llegar aquí me he tirado cerca de tres horas y media googleando y arreglando los mensajes de error que me salían, no tenía las librerías de request ni lxml, la versión de python que había instalado (la última), daba errores con tu script ya que por lo visto en esta versión había que poner paréntesis a los print o algo así, evidentemente no soy un hacha de la programación, lo que soy es cabezón pro, eso sí xD

    En fin, que cuando se han acabado los problemas y he visto que salían los puntitos ahora ya no se que hacer pues al no salirme ningún error no se como capear este problema.

    Saludos y muchas gracias por compartir conocimientos 😉

    1. Nada como ser “cabezón” para que las cosas terminen funcionando 😉

      Voy a tener que actualizar el script a la última versión de Python y proporcionar un método que simplifique la instalación de dependencias (queda anotado para una futura versión, gracias)

      Respecto al problema ¿es posible que los cálculos afecten a la inserción de datos?

      Mis formularios son muchísimo más simples por lo que tendríamos que estudiarlo. Si te parece, contáctame a través del soporte técnico y hablamos ¿ok?

      1. “Las secuencias de comandos, escritas en JavaScript, se ejecutan en los servidores de Google y tienen acceso a la mayoría de los productos de Google. Esto facilita la automatización de distintas tareas.” (Tomado de https://support.google.com/sites/answer/1224162?hl=es). Es que estoy necesitando urgentemente solucionar un problema con una encuesta que hice por este medio pero no manejo las herramientas de software que tu mensionas. Muchas gracias.

  3. Hola, necesito tu ayuda
    Me quedé en el paso 4.
    Descargué el script y luego edité con el bloc de notas lo de Url del formulario de Google Docs.
    Hasta ahi todo bien, el problema que tengo es eso de la “Ruta al fichero CSV con los datos”
    Supongo que se refiere al FICHERO_DATOS=’./respuestas2.csv’ pero ¿Que pongo? ¿El nombre del archivo descargado del formulario? (Ejemplo: =’./EncuestaEcologica.csv’ ) ¿O la ubicación en donde se guardó? (Ejemplo: =’C:\Users\NombreUsuario-PC\Downloads’)

    Bueno hice eso, le di guardar y como no podía abrirlo (para ejecutarlo) tuve que descargar el python. Luego de descargarlo me permitía abrirlo pero se cerraba al instante y me salía de error :

    File “C:\Users\NombreUsuario-PC\Downloads\update_google_drive_form_v2.=.py” line 34. in
    Import request
    ImportError: no module named request

    Desde ya gracias por la ayuda.

    1. Hola “señor”

      la ruta al fichero puede ser relativa (como en el ejemplo) o absoluta pero, siempre debe incluir el nombre del fichero.

      Respecto al problema que indica, necesita instalar el módulo “requests” de Python para que funcione (le recomendaría instalar y usar pip)

      Cualquier cosa, no dude en preguntar 😉

      1. Hola y gracias por la respuesta

        Este era el problema que tenía inicialmente (El archivo descargado abierto con el bloc de notas para editar (1), nombre del archivo del formulario (a), ID del formulario (b), y el error que salía (C) http://prntscr.com/8u43rn

        Como me dijo, instalé el módulo “requests” de Python desde la página oficial pero me sale el siguiente error (tanto si lo instalo desde el primer link de descarga como el segundo) http://prntscr.com/8u4ai5

        Y respecto al pip también me sale el mismo error de arriba y se cierra rápido

  4. Compañero! muchas gracias ante todo… pero una te hago una observación para que a nadie le vuelva a doler la cabeza como a mi. Creo que no se menciona, ni en este post, ni en el que escribiste hace dos años, que el formulario en cuestión NO PUEDE ESTAR DIVIDIDO EN PÁGINAS, ya que el script no pulsa en el botón “continuar”, lógicamente… una obviedad que me ha hecho perder casi una hora buscando el fallo (gajes del oficio…)

  5. Hola, hemos instalado el Python 2.7.10 luego hemos instalado el python request y pip correctamente.

    Intentamos volcar el script modificando solo el ID del formulario y la ruta del CSV y no da ningun error pero tampoco hace nada.

    La ruta del CSV tiene que estar en alguna carpeta en especifico ( ya que pones “./” o podria ponerlo en la “c:\nombre.csv”

    gracias

  6. Buenos días. Esta es la solución que estaba buscando. Sin embargo, al realizar el proceso no sé como correr el script. La verdad no se nada de programación y seguí las instrucciones pero llegué hasta ese punto.

  7. Hola, alguien me puede decir porque al momento de cargar mis respuestas las reviso en el formulario de gmail y dice que tengo 3 repuestas, pero al revisarlas están en blanco…..
    Ayuda por favor

  8. Hola
    Llevo un buen rato intentando utilizar el contenido de este post y estoy más perdida que un pulpo en un garaje.

    En un principio, al ejecutar el script me dice:

    File “importar.py”, line 77, in setRespuestas
    payload[header[colnum]]=col
    IndexError: list index out of range

    Lo arreglé poniendo “and colnum<len(header):" en la condición del if.

    Después ya se ejecutó correctamente, sacando los puntos correspondiente, pero sin añadir las respuestas en ningún sitio.

    ¿Es posible que ese cambio que hice impida que se ejecute correctamente?

    El formulario es entero, sin cortes por página.

    Un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.