google-apps-script google-sheets google-form

google apps script - ¿Cómo puedo obtener múltiples bloques de eventos no deseados desde el mismo activador de envío de formulario?



google-apps-script google-sheets (2)

Obtención de desencadenantes falsos onFormSubmit

Como @JG señaló, obtenía más de un desencadenante de cada envío del formulario.

Noté que al ingresar los valores de e en una hoja de cálculo no estaba recibiendo ninguna de las respuestas. Así que para eliminar estos desencadenantes no deseados, solo usé la siguiente lógica.

if(e.values && !e.values[1]){return;} donde e.values[1] era una pregunta obligatoria.

Mi registro:

Las líneas sin valor en la columna C son desencadenantes no deseados.

Creé un formulario de una pregunta esta mañana porque quería ver el bloque de eventos por mí mismo. Sin embargo, el proceso dio un giro inesperado para mí. Mi descripción sigue:

Estoy registrando el evento onFormSubmit con el siguiente código:

function testFormSubmission(e) { var lock=LockService.getUserLock(); try{ if(lock.tryLock(30000)) { var ss=SpreadsheetApp.getActive(); var sh=ss.getSheetByName(''LogSheet''); var tA=[Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"d/M/yyyy HH:mm:ss")]; tA=tA.concat(e.values); tA.splice(tA.length-1,1,e.triggerUid,e.range.rowStart,e.range.columnEnd,JSON.stringify(e.values)); sh.appendRow(tA); lock.releaseLock(); } } catch (e){throw("Couldn/'t get lock for 30 seconds");return;}; }

Tengo dos imágenes de mi hoja de cálculo a continuación:

En realidad, solo hay dos columnas en e.values, una es la fecha y la otra es la respuesta a la pregunta que es "verde" o "azul". Las columnas en blanco provienen del hecho de que empecé con tres preguntas y recogí correos electrónicos, pero decidí eliminar dos de ellas por simplicidad, ya que yo mismo estoy generando las presentaciones.

De todos modos, las respuestas que no tengan Verde o Azul en la columna C simplemente no deberían estar allí. La columna J es simplemente JSON.stringify(e.values) y parece sugerir que e tiene valores incorrectos en ella ... creo? Si no

Aquí hay una imagen de la hoja de cálculo. (algo de eso)

Esta es la hoja de respuestas de formulario 1:

Esta es la LogSheet:

Así que mi pregunta es simplemente de dónde vienen las líneas anexas no deseadas en la Hoja de registro.

Actualicé mi pregunta del título porque no creo que esté recibiendo varios envíos, de lo contrario, esperaría tener varias líneas en la hoja de respuestas de formulario 1.

Para su información, la columna H en LogSheet es rowStart, por lo que es fácil averiguar qué fila en Form Response 1 se correlaciona.


Creo que su código demostró que algunos desencadenantes son falsos y no deseados y, como tal, Google no debería generarlos. Envié un comentario a Google sobre un problema similar.

En mis desencadenantes no deseados, solo obtenía el e.range.getRow () para determinar qué fila cambió, y luego iba a la fila para realizar el cálculo requerido. En mi caso, la fila contenía información correcta para todos los disparadores espurios (probablemente porque el primero registró correctamente los datos en la hoja de cálculo).

Su código es un excelente respaldo para evitarlo, pero tengo demasiados formularios y activaciones para cubrir. Poner este código en todos esos lugares sería un dolor. Esperemos que Google resuelva este problema pronto y no veamos más desencadenantes espurios.