Enviar datos a Google Forms por medio de url

La gran mayoría de las personas que trabajan con Documentos de Google ya debe conocer Google Forms y el para que sirve al igual que algunas de las ventajas/desventajas del mismo. Forms es una practica herramienta que nos permite crear de manera sencilla formularios para realizar encuestas y todos los datos recopilados pueden vincularse a una hoja de cálculo de Google (Sheets).


Entonces si Forms es una magnifica herramienta para que querríamos enviar datos al mismo desde otras aplicaciones. Sencillamente para cubrir algunas de las carencias de Forms que se presentan en determinadas situaciones como las siguientes:
  • Recopilar la ubicación (latitud/longitud) de quien responde la encuesta. En efecto en Forms no hay forma de recuperar la ubicación del usuario, pero se podría crear un formulario personalizado para obtener este dato y enviarlo a Forms.
  • Brindar respuestas por defecto sin que puedan ser modificadas por el usuario. Otra característica que tampoco incorpora Forms.
  • Crear listas dependientes. La única forma emular esta característica es haciendo uso de secciones el problema de esto es que dependiendo de la cantidad de elementos, trabajar con secciones puede convertirse en una tarea sumamente tediosa. Ha habido casos de personas que reportan que al tener una gran cantidad de secciones al entrar a la vista diseño del formulario este tarda en cargar o se ve ralentizado el desempeño al tratar de editar. No así para un formulario web personalizado donde con Javascript es fácil implementar combos/listados dependientes.
Voy a hacer sincero en este post no voy a mostrar el como solucionar los puntos anteriores, pero si es el punto de partida para llegar a una posible solución y no solo de los puntos antes mencionados sino de otros que no haya considerado.

Vayamos al punto central de este post... Como enviar datos a un formulario de Forms sin tener que contestarlo directamente y para ello mostrare como hacerlo desde VBA/Excel y desde la linea de comando de Linux (usando Curl).

Para poder entender un poco mas este post les recomiendo que previamente hayan leído el post anterior: Obtener el nombre de los parámetros de un formulario de Google

Vamos a utilizar la siguiente liga: Respuesta Formulario
La cual es la liga a las respuesta publicadas del siguiente formulario: Formulario Prueba

Este seria el código en VBA/Excel:

Sub VBA_HTTP_POST_toGoogleForms()
' Hay que activar la referencia "Microsoft XML, v6.0" (Herramientas > Referencias)
' Programador: Ryan Wells (wellsr.com)
' La salida o resutado de la peticion POST se puede consultar en a siguiente liga:
' https://docs.google.com/spreadsheets/d/e/2PACX-1vShpwMerte2mTWPSLD-4VRpmCipdh-9yb-iNzRQdzenCziTdlRwPAYfzvdrf5TBLYaFPWf6jPHvjvqC/pubhtml?gid=506345205&single=true
' Se paciente y espera 1 o 2 minutos a que la pagina de respuestas se actualice

Dim apiURL As String, requestString As String, endpoint As String
Dim id_header_name As String, id_key As String
Dim request As MSXML2.ServerXMLHTTP60

id_header_name = "Content-Type"
id_key = "application/x-www-form-urlencoded; charset=utf-8"
apiURL = "https://docs.google.com/forms/d/e/1FAIpQLSe4FyrWzvZ9RxMIyVKhc2b5YkhV7tEgLvH5HLR7joJ9JlK5cg/formResponse?ifq"
endpoint = "&entry.1361966084=Toño&entry.853436511=10500" & "&submit=Submit"
requestString = apiURL & endpoint
Set request = New ServerXMLHTTP60
request.Open "POST", requestString, False
request.setRequestHeader id_header_name, id_key
request.send
Debug.Print request.statusText
End Sub

En Linux utilizando el comando Curl:
 
curl -X POST -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" https://docs.google.com/forms/d/e/1FAIpQLSe4FyrWzvZ9RxMIyVKhc2b5YkhV7tEgLvH5HLR7joJ9JlK5cg/formResponse?ifq  --data-urlencode "entry.1361966084=Toño" --data-urlencode "entry.853436511=100" -d submit=Submit

Hay que tener en cuenta que estos métodos son lentos ya que envían los datos al formulario y este al recibirlos los vacía a Google Sheets. Entonces si se quiere utilizar para importar datos a Sheets desde Excel es una pésima idea.

Si te ha gustado este post por favor comártelo y recomienda mi blog. Si gustas hacer una donación o comprar el archivo excel con el código de eejmplo puedes hacerlo en los siguientes enlaces:

Comentarios