¿Necesitas eliminar datos introducidos erróneamente en un cuestionario creado con Google Forms?
¿Todavía no ha implementado Google la posibilidad de modificar las pruebas que realizar en los Formularios de Google?
No te preocupes, hemos actualizado a la versión 3 el script que te permitirá hacerlo 👍
Proceso
1. Evitar nuevas respuestas
De modo que no se pierden datos durante el proceso.
Accede a las respuestas de tu formulario y desactiva la opción «Se aceptan respuestas»
No sufras… será sólo unos segundos y puedes dejar una «nota» a tus visitantes
2. Exportar los datos
Generaremos un fichero CSV con los datos de todas las respuestas que ya tenemos almacenadas
3. Elimina las respuestas
Tranquilo, las tenemos en el fichero que hemos exportado en el paso anterior.
Para hacerlo utiliza la siguiente opción del menú de opciones
4. Deja que sigan contestando
No enfademos a nadie, nuestros visitantes pueden seguir contestando a partir de ahora sin problemas y no volveremos a molestarles más.
Activa otra vez la posibilidad de responder
5. Corrige los datos
Edita las contestaciones que exportamos en el paso 2 (inserta nuevas entradas, borra las que no sirvan, edita aquellas con datos incorrectos, …) sobre el fichero de texto que has exportado (respetando la “sintaxis”, no borres las comillas y/o los separadores).
6. Descarga el script
Puedes obtener una copia actualiza de Github:
NOTA: si alguien necesita ayuda para descargar el código o no está acostumbrado a obtener contenidos de GitHub que lo indique en los comentarios y lo explico paso a paso 👍
7. Configura el programa
Editar el script para
- indicar la url del formulario desde el que introducen las respuestas nuestros usuarios (sí, el que usamos para obtener los nombres de los campos)
- indicar la ruta al fichero que contiene el “export” de las respuestas
Por si te sirve de orientación, aquí se encuentra la información que debes modificar
8. Lanza el script
Un python2 ./importar.py debería ser suficiente ;))
9. Comprueba los resultados
Si has conseguido seguir todos los pasos hasta aquí (sin volverte loco) y no aparece ningún error (sólo un “puntito” por cada una de las respuestas del fichero) es porque eres un máquina todo ha salido bien.
Ya sólo te quedaría abrir el formulario en Google Drive y comprobar que el contador de respuestas (y el resumen automático de Google) incluye todas las respuestas que acabamos de enviarle.
Conclusión
Nueva versión (y ya es la tercera) del script en Python que te permitirá modificar los datos de cualquier formulario de Google y que quede reflejado en las estadísticas y gráficas automáticas que ofrece la herramienta.
Me alegra (y enorgullece) que, después de tanto tiempo (prácticamente 4 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 👍
Hola, yo otra vez, Primero que todo, gracias por publicar esto tan pronto
ahora mi problema es que no se como descargar la nueva versión del script.
Podrías por favor explicarme como hacerlo
Me gustaMe gusta
Te he enviado cómo descargar un repositorio de GitHub por correo electrónico, no obstante, dejaré constancia de dónde se encuentra la opción en los comentarios por si a alguien más le resulta de utilidad.
Gracias por preguntar la duda y suerte con el proyecto que tienes entre manos 👍
Me gustaMe gusta
Problema:
Después de lanzar tu script,
obtengo este mensaje en la consola de Línux
en cuatro líneas consecutivas que transcribo tal cual aparecen:
File «importar.py», line 82
print «–»
^
SyntaxError: Missing parentheses in call to ‘print’
Desde la consola de Windows 7,
también obtengo ese mismo mensaje
o uno muy parecido
¡Gracias por tu ayuda»
Xavi
Me gustaMe gusta
Siento oirlo Xavi no obstante parece deberse a que estás usando Python v3 (y el script es para la versión 2).
En Linux resulta sencillo cambiar entre ellos (basta utilizar python2 o python3 según el caso desde la terminal) en Windows tendría que mirarlo por lo que, si alguien está aconstumbrado a hacerlo y nos comenta la forma más sencilla, le estaremos realmente agradecidos 👍
Me gustaMe gusta
¡Otra vez muchas gracias por tu respuesta y ayuda!
Cuando tenga un poquito de tiempo,
volveré a probar y diré algo.
(En Windows 7 también utilicé Python v3.)
Me gustaMe gusta
Perfecto, quedo a la espera de noticias.
Cualquier cosa, avisa
Me gustaMe gusta
¡Funciona!
Ya sabes cuánto se alegra uno cuando finalmente funciona algo que se resistía; pues así estoy yo de contento… gracias a ti.
En Linux, como dijiste: simplemente usando Python 2.7.3.
Funciona también en Windows 7 Ultimate con Service Pack 1; pero antes hay que instalar dos paquetes Python para evitar algunos errores, que aparecen en la consola que, con tu permiso, explico en algunos pasos por si puede resultar de ayuda a alguien o siente curiosidad.
Utilizaré Python 2.7. para Windows.
Esta línea dice que no existe ningún módulo llamado requests.
Para solucionar este problema, busco por Internet alguna solución, que encuentro aquí, en donde se explica cómo instalar pip (una herramienta escrita en Python para facilitar la instalación de paquetes en diversos sistemas operativos).
Una vez instalada pip, instalo el paquete requests según las instrucciones que aparecen aquí, concretamente en la respuesta que da rprez.
Lógicamente, procedo ahora a instalar el paquete lxml como he hecho con el de requests anteriormente; y una vez instalado ejecuto nuevamente tu script.
¡Gracias de nuevo! Tienes mi dirección electrónica; si necesitas algo de Castellón, me lo puedes pedir por Internet; y si vienes por aquí y te apetece tomar una cerveza, estás invitado.
¡Un abrazo y gracias!
Me gustaMe gusta
Toda colaboración es bien recibida, agradecida y aplaudida: ¡Gracias Xavi!
Te contacto por privado 👍
Acabas de hacerme ver qué no incluí las dependencias para poder instalar todo lo necesario a través de pip 😅
Anoto corregir el despiste, gracias nuevamente Xavi
Me gustaMe gusta
Me aparece un error al tratar de importar los datos, a ver si puedes darme una pista;
D:\>importar.py
Traceback (most recent call last):
File «D:\importar.py», line 92, in
setRespuestas()
File «D:\importar.py», line 77, in setRespuestas
payload[header[colnum]]=col
IndexError: list index out of range
Me gustaMe gusta
¿Es posible que los datos en CSV estén mal y/o falten?
Salu2
Me gustaMe gusta
No debería, está exportado desde el mismo formulario, y parece tener todos los campos.
Me gustaMe gusta
¿Tiene el formulario varias páginas o sólo una?
Me gustaMe gusta
Hola!
Escribí ayer un comentario con una consulta en este post: https://andalinux.wordpress.com/2015/08/10/actualizar-encuestas-recogidas-con-google-drive/
En principio, todo lo que puse ya lo tengo solucionado. Por algún motivo, me estaba leyendo mal los nombres de la cabecera de las preguntas y eso estropeaba todo.
Mi problema ahora es el siguiente: todo se ejecuta sin problemas y se me añaden el número de respuestas que tengo en el fichero, pero las columnas con los datos están vacías.
¿Alguna idea de cual podría ser el problema?
Me gustaMe gusta
Me respondo a mi misma para decir que ya no hace falta. Ya lo he resuelto.
Gracias de todas formas.
Un saludo.
Me gustaMe gusta
Me alegra que lo haya podido resolver al tiempo que le pido disculpas por no haber podido responder.
Tenía anotada la tarea para este fin de semana pues, materialmente, no podía sentarme delante del ordenador a hacer pruebas con el script hasta hoy.
¿Tuvo que realizar algún cambio al script o haría alguna recomendación que pueda ser de utilidad a otros usuarios que lo puedan necesitar?
Gracias y disculpe el no haber podido (en esta ocasión) ser de utilidad.
Salu2
Me gustaMe gusta
No, al final no tuve que hacer ninguna modificación al script. Uno de mis problemas era que leía mal la cabecera y entendía que cada una de las letras del primer campo era una columna distinta.
Lo solucioné cambiando el archivo con los datos, de tal manera que mi primera línea era: «Marca temporal, entry,xxxxxxxxxxxx, entry.xxxxxxxxxxxxxxx»
De todas formas, la información de la marca temporal la ignora y se rellena con el momento de ejecución del script.
Un consulta, que no sé si puede resultar interesante tener en cuenta o no, en mi formulario, las repuestas están identificadas también por un correo electrónico que se rellena automáticamente porque es un formulario cerrado. ¿Cómo podría incluir también ese dato? Porque no dispongo de campo para introducirlo.
Un saludo
Me gustaMe gusta
Gracias por los detalles Marta, seguro que a la compañera Eli y a mí mismo (que le voy a echar una mano) le va a resultar de mucha utilidad.
Anoto el tema del correo (que resulta realmente interesante) para la próxima revisión, que pueda hacerle al código, ver cómo lo podríamos incluir 👍🏻
Me gustaMe gusta
Hola! No puedo responder al comentario de Marta. El problema que yo tengo es que tampoco sé depurar el código del script, no me apaño con el IDLE y no sé cómo ir paso a paso para ver dónde pasa lo que no quiero que pase. 😦
Me gustaMe gusta
¿Cómo lo has hecho porque a mí me pasa lo mismo?
Me gustaMe gusta
Hola!
Pues yo ya llevo una semana con el temita… No había usado jamás Python. Me lo descargué, primero una versión, luego otra. Problemas como Xavi del request y el lxml… importar todo el pip.
Y siempre el mismo error, el de las cabeceras de Hande:
payload[header[colnum]]=col
IndexError: list index out of range
Me recorrí todas las cabeceras quitando TODAS las «,» (porque mis textos tenían comas…). Tenía columnas con el mismo texto, así que también los cambié. Probé quitando y poniendo el «Timestamp»… y nada. Hoy descubro este post de hace un año (todo lo probé con la versión de 2013) y veo que no funciona con varias hojas o secciones… también lo he quitado.
Y sigo teniendo el mismo problema de las cabeceras 😥 ya no sé qué más hacer…
Ayuda informático de guardia!!! 😀
Por cierto, fantástico que sigas trabajando en esto 😉
Saludos,
Eli
Me gustaMe gusta
Hola Eli, sí que sois muchos los que estáis teniendo problemas con las cabeceras y el script… ¿podrías enviarme una muestra de datos para echarle un vistazo?
Gracias y un saludo
Me gustaMe gusta
Claro, te puedo reenviar el archivo si quieres. Dime tu mail privado y te lo mando.
Gracias!!!
Me gustaMe gusta
Contáctame a través del soporte técnico y trataré de echarle un vistazo (no garantizo nada salvo intentarlo… estoy en demasiados frentes al mismo tiempo 😅)
Me gustaMe gusta
Estimados tengo el mismo problema me aparece:
Traceback (most recent call last):
File «importar.py», line 112, in
setRespuestas()
File «importar.py», line 94, in setRespuestas
if header[colnum] in camposMultiples:
IndexError: list index out of range
exite alguna solución.
muchas gracias de antemano.
Saludos.
coni
Me gustaMe gusta
Buenos días, en primer lugar felicidades por el trabajo del script.
Tengo un problema con las cabeceras del CSV, son muy largas y con símbolos de puntuación extraños (acentos, la letra ñ…)
Cuando ejecuto el programa me añade las filas pero no sabe leer las cabeceras y las deja en blanco.
He probado a poner los acentos y Ñs a mano en el csv y tampoco los lee.
AQUÍ LA MUESTRA DE MIS CABECERAS INFERNALES:
Marca temporal,»0. Residencia»,»1. Edad»,»2. Sexo»,»3. Titulación Actual»,»4. Lugar de trabajo (indicar PROVINCIA)»,»5. CategorÃa profesional «,»6. Horario del Curso»,»6.1 Porcentaje de la jornada laboral que abarca el curso «,»7. Tamaño de la empresa del participante «,»1. Organización del curso [1.1 El curso ha estado bien organizado (información, cumplimiento fechas y de horarios, entrega material)]»,»1. Organización del curso [1.2 El número de alumnos del grupo ha sido adecuado para el desarrollo del curso]»,»2. Contenidos y metodologÃa de impartición [2.1 Los contenidos del curso han respondido a mis necesidades formativas]»,»2. Contenidos y metodologÃa de impartición [2.2 Ha habido una combinación adecuada de teorÃa y aplicación práctica]»,»3. Duración y horario [3.1 La duración del curso ha sido suficiente según los objetivos y contenidos del mismo]»,»3. Duración y horario [3.2 El horario ha favorecido la asistencia al curso]»,»4. Formadores [4.1 La forma de impartir o tutorizar el curso ha facilitado el aprendizaje]»,»4. Formadores [4.2 Conocen los temas impartidos en profundidad]»,»4. Tutores [4.1 La forma de impartir o tutorizar el curso ha facilitado el aprendizaje]»,»4. Tutores [4.2 Conocen los temas impartidos en profundidad]»,»5. Medios didácticos (guÃas, manuales, fichas…) [5.1 La documentación y materiales entregados son comprensibles y adecuados]»,»5. Medios didácticos (guÃas, manuales, fichas…) [5.2 Los medios didácticos están actualizados]»,»6. Instalaciones y medios técnicos (pizarra, pantalla, proyector, TV, vÃdeo, ordenador, programas, máquinas, herramientas…) [6.1 El aula, el taller o las instalaciones han sido apropiadas para el desarrollo del curso]»,»6. Instalaciones y medios técnicos (pizarra, pantalla, proyector, TV, vÃdeo, ordenador, programas, máquinas, herramientas…) [6.2 Los medios técnicos han sido adecuados para desarrollar el contenido del curso (ordenadores, pizarra, proyector, TV, máquinas)]»,»7. Sólo cuando el curso se ha realizado en la modalidad a distancia, teleformación o mixta [7.1 Las guÃas tutoriales y los materiales didácticos han permitido realizar fácilmente el curso (impresos, aplicaciones telemáticas)]»,»7. Sólo cuando el curso se ha realizado en la modalidad a distancia, teleformación o mixta [7.2 Se ha contado con medios de apoyo suficientes (tutorÃas individualizadas, correo y listas de distribución, teleconferencia, biblioteca virtual, buscadores…)]»,»8. Mecanismos para la evaluación del aprendizaje [8.1.Se ha dispuesto de pruebas de evaluación y autoevaluación que me permiten conocer el nivel de aprendizaje alcanzado]»,»8. Mecanismos para la evaluación del aprendizaje [8.2 El curso me permite obtener una acreditación donde se reconoce mi cualificación]»,»9. Valoración general del curso [9.1 Puede contribuir a mi incorporación al mercado de trabajo]»,»9. Valoración general del curso [9.2 Me ha permitido adquirir nuevas habilidades/capacidades que puedo aplicar al puesto de trabajo]»,»9. Valoración general del curso [9.3 Ha mejorado mis posibilidades para cambiar de puesto de trabajo en la empresa o fuera de ella]»,»9. Valoración general del curso [9.4 He ampliado conocimientos para progresar en mi carrera profesional]»,»9. Valoración general del curso [9.5 Ha favorecido mi desarrollo personal]»,»10. Grado de satisfacción general con el curso»,»11. Si desea realizar cualquier sugerencia u observación, por favor, utilice el espacio reservado a continuación»,»Fecha de cumplimentación del cuestionario»
Me gustaMe gusta
Que tal estimado me gustaria que me ayudes de suma Urgencia con lo que es el paso 6 no se nada de script y necesito corregir los datos de un formulario de suma urgencia
Le estaria de antemano muy agradecido que me explique como hacer esos pasos
Me gustaMe gusta
Aunque no es complicado, sería interesante contar con algunos conocimientos básicos para el manejo del script en python (aunque nada que no pueda encontrarse en Internet)
El script (gracias al botón «raw» que encontrarás al pinchar sobre el fichero .py) puedes guardarlo en una carpeta y así solventarías el problema con el paso 6.
Cualquier cosa, no dudes en preguntar a través de los comentarios.
Suerte Christian 👍🏻
Me gustaMe gusta
Hola. Otro por aquí intentando utilizar el script (fantástica idea) para modificar los datos de las respuestas de un formulario.
A mí también me funciona aparentemente bien,me aparece el número de respuestas actualizado pero en el resumen del formulario todo está en blanco, y si descargo el csv, efectivamente, todo está en blanco.
He estado mirando el código del script y he añadido un «print header[0]» despues de header = getCampos().split(«,») y me devuelve «Marca Temporal», pero si pongo «print header [1]» no devuelve nada.¿Eso te dice algo?
¡Muchas gracias por todo!
Me gustaMe gusta
Gracias Txema… me dice que ya va empezando a ser urgente que le dedique un rato a este tema porque sois varios los que estáis teniendo problemas para hacerlo funcionar.
Tiene toda la pinta de que Google ha vuelto a hacer algún cambio y hay que actualizarlo 😥
Siento no poder dedicarle el tiempo que se merece y necesitáis pero no se me ha olvidado que debería hacerlo
Me gustaMe gusta
Hola, quisiera saber si esta opción permite modificar las fechas y horas de envio de cada entrada de respuestas del formulario? ya que eso es lo que necesito modificar. Gracias de antemano!!
Me gustaMe gusta
Hola Andalinux, quería consultar como puedo evitar recibir respuestas solo de algunos correos después de haber enviado el formulario.
Me gustaMe gusta
La verdad es que sería una interesante posibilidad. A día de hoy, sólo se me ocurre o no enviar el formulario o, si ya tienes las respuestas, eliminarlas de la hoja de cálculo y lanzar script que pongo en el artículo
Me gustaMe gusta
Podrias hacer un video de Youtube explicando esto? Hice todos los pasos y no sucede nada corre el Script, cargo la pagina de las encuesta me sigue saliendo las respuestas en 0.
Me gustaMe gusta
Pues no es mala idea Juan.
Igual es que tienes algún control en el formulario que no gestiona correctamente el script ¿Me enviarías por privado la URL del formulario para echarle un vistazo?
Me gustaMe gusta
Por donde te puedo enviar el mensaje privado?
Me gustaMe gusta
Lo mande por mensaje de Facebook en tu pagina.
Me gustaMe gusta
El blog tiene unformulario de contacto pero, no te preocupes Juan, he visto que ha llegado a FB 👍🏻
Me gustaMe gusta
Por cierto, ahora que me paro (en el móvil se ve poco y mal) ¿Estás usando la última versión del script? (al principio de este artículo está referenciado)
Me gustaMe gusta
Por favor un vídeo tutorial, sería de gran ayuda
Me gustaMe gusta
Pues intentaré sacar tiempo (ahora ando de final de curso) para explicar el proceso 😅
Me gustaMe gusta
El blog tiene unformulario de contacto pero, no te preocupes Juan, he visto que ha llegado a FB 👍🏻
Me gustaMe gusta
Hola estimados, estoy intando ejecutar pero me aparece el siguiente problema
Traceback (most recent call last):
File «importar.py», line 37, in
import requests
ModuleNotFoundError: No module named ‘requests’
no se como solucionarlo. les agradecería mucho si me pueden ayudar.
saludos 😀
Me gustaMe gusta
solucioné lo anterior pero ahora me aparece
File «importar.py», line 41
FICHERO_DATOS=’C:\Users\conni\Desktop\Nueva carpeta\IN.cvs’
^
SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape
ayuda porfavor
Me gustaMe gusta
ignorenlo ya lo logre solucionar.
Muchas gracias.
Me gustaMe gusta
Siento no haber visto antes el comentario, imagino que tenemos una diferencia horaria importante 😉
Me alegra que haya podido resolver los problemas y que, al menos, se lleve también el aprendizaje de Python 👍🏻
No obstante comentarle que recientemente se ha publicado una nueva versión del script para Python v3 por si volviese a necesitarlo
Enhorabuena y un saludo desde España 😉
Me gustaMe gusta
Hola, quería saber si sigue funcionando a la fecha. Gracias
Me gustaMe gusta
Hola Sirsia.
Sigue operativo pero deberías utilizar la versión más reciente del script
Salu2
Me gustaMe gusta