scripts script onedit google formularios form examples docs developers developer apps app google-apps-script google-form

google apps script - script - ¿Cómo obtener los valores del formulario en el controlador de eventos de envío?



onedit google script (1)

Estoy tratando de comenzar con un formulario de Google muy simple que contiene solo un par de preguntas (una opción múltiple con solo 2 opciones y un breve texto). Después de crearlo, abrí el editor de guiones y escribí

function onSubmit(e) { Logger.log("onSubmit(%s)", JSON.stringify(e)); }

y configurado en onSubmit como el controlador para el activador "enviar formulario" utilizando los "desencadenantes del proyecto actual" en el menú "Editar".

Completar el formulario y enviarlo ahora da como resultado que se llame al controlador, pero solo lo veo en el registro:

[17-04-15 18:56:23:584 CEST] onSubmit({"response":{},"source":{},"authMode":{},"triggerUid":1870249629})

es decir, el campo de respuesta está vacío. También he intentado usar FormApp.getActiveForm().getResponses() , pero también devuelve una matriz de varios objetos vacíos (OTOH, FormApp.getActiveForm().getTitle() devuelve el título que di al formulario).

Sospecho que necesito darle al script algunos permisos adicionales para acceder a los datos del formulario, pero no tengo ni idea de cómo hacerlo, ni siquiera si este es realmente el problema.

¿Alguien sabe por qué no obtengo los valores del formulario y qué debo hacer para obtenerlos? ¡Gracias por adelantado!


Hay 2 patrones para recuperar los valores enviados. Para ambos patrones, la función para recuperar los valores del envío de formularios debe instalarse como un disparador. La información detallada de los activadores instalados es https://developers.google.com/apps-script/guides/triggers/installable .

1. El script se abre en la hoja de cálculo.

En este caso, al instalar un activador, puede recuperar los valores enviados por su secuencia de comandos. La información detallada de Event Objects es https://developers.google.com/apps-script/guides/triggers/events#form-submit .

Guión:

function onSubmit(e){ Logger.log("%s", JSON.stringify(e)); }

Resultado:

{ "values": [ "date and time", "test" ], "namedValues": { "fromtestform": [ "test" ], "timeStamp": [ "date and time" ] }, "range": { "columnStart": 1, "rowStart": 2, "rowEnd": 2, "columnEnd": 2 }, "source": {}, "authMode": {}, "triggerUid": ##### }

2. La secuencia de comandos se abre en el formulario.

En este caso, los valores enviados pueden recuperarse mediante el siguiente script. La información detallada es https://developers.google.com/apps-script/reference/forms/form-response .

Guión:

function onSubmit(e){ Logger.log("authMode=%s, source.getId()=%s", e.authMode, e.source.getId()); var items = e.response.getItemResponses(); for (i in items){ Logger.log("getItem().getTitle()=%s, getResponse()=%s", items[i].getItem().getTitle(), items[i].getResponse()); } }

Resultado:

authMode=FULL, source.getId()=### form ID ### getItem().getTitle()=## item''s title ##, getResponse()=test

Si malinterpreto tu pregunta, lo siento.