Creé un formulario de envío en línea en tally.así vinculado a una hoja de cálculo de Google. También escribí un script que debería enviar un correo electrónico una vez que la hoja se haya actualizado con la respuesta del formulario, pero el correo electrónico no parece enviarse.
Esto es lo que he escrito. Gracias de antemano:
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FormSubmission"); const rData = e.source.getActiveSheet().getRange(e.range.rowStart,1,1,18).getValues(); ... if (e.range.columnStart == 3){ MailApp.sendEmail({ to: "abc@gmail.com", subject: "New Request", htmlBody: msg, noReply: true }); } } A partir de su pregunta I created an online submission form on tally.so linked to a Google Sheet. I also wrote a script that should send an email once the sheet has been updated with the form's answer, but the email doesn't seem to send. , supuse que en su situación, el valor podría agregarse a la hoja usando Sheets API.
Desde e.range.columnStart y e.range.rowStart de su secuencia de comandos de visualización, es posible que esté utilizando el disparador OnEdit instalado.
Si mi entendimiento es correcto, cuando se agrega un valor a la hoja usando Sheets API, el activador OnEdit instalable no se activa. Pensé que esta podría ser la razón de su problema.
Si desea ejecutar la secuencia de comandos cuando se agrega el valor mediante Sheets API, es necesario utilizar el disparador OnChange instalado. Y, en este caso, para recuperar la fila adjunta, var rData = sheet.getRange(sheet.getLastRow(), 1, 1, 18).getValues() o var rData = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).getValues() es necesario para su uso.
Cuando estos puntos se reflejen en su guión, ¿qué tal la siguiente modificación?
Instale el disparador OnChange en la función de installedOnChange . Ref Cuando use este script, envíe los valores usando su formulario.
function installedOnChange(e) { var sheet = e.source.getSheetByName("FormSubmission"); var rData = sheet.getRange(sheet.getLastRow(), 1, 1, 18).getValues(); // Modified // do something // Please set msg. MailApp.sendEmail({ to: "abc@gmail.com", subject: "New Request", htmlBody: msg, noReply: true }); } rData es el valor de la última fila de la hoja "FormSubmission".
Agregue su secuencia de comandos y configure msg .
El objeto de evento del activador OnChange no incluye la propiedad de range . Tenga cuidado con esto.