notificación por correo electrónico si se cambia la celda

necesito ayuda con el script de google Tengo una hoja de cálculo con varias filas.

Necesita una secuencia de comandos que haga lo siguiente:

Si alguna celda en la columna G ha sido modificada, envíe una notificación por correo electrónico a la dirección personalizada con información de esta fila: información de la celda D y nuevo valor de la celda G.

UPD

Encontré información útil:

function emailNotification() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var cell = ss.getActiveCell().getA1Notation(); var cellvalue = ss.getActiveCell().getValue().toString(); var recipient = "me@gmail.com"; var subject = 'Update to '+sheet.getName(); var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on cell: «' + cell + '» New cell value: «' + cellvalue + '»'; MailApp.sendEmail(recipient, subject, body); }; 

Este script rastrea los cambios en la tabla completa. Y me gustaría rastrear cambios solo en la columna G, y obtener valores de la columna D.

Pregunta:

Cómo obtener el valor de la celda en la columna D cuando el valor ha cambiado de celda en la columna G

Finalmente guión – responde a mi pregunta

hoja de cálculo

 function sendNotification() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var cell = ss.getActiveCell().getA1Notation(); var row = sheet.getActiveRange().getRow(); var cellvalue = ss.getActiveCell().getValue().toString(); var recipients = "me@gmail.com"; var message = ''; if(cell.indexOf('G')!=-1){ message = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue() } var subject = 'Update to '+sheet.getName(); var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message: «' + message + '»'; MailApp.sendEmail(recipients, subject, body); }; 

Establecer trigger en onEdit y script funcionará bien

    Debe buscar este foro antes de publicar preguntas; Busqué en el correo + celular y obtuve algunos resultados:

    Por ejemplo, esta respuesta postal hace casi exactamente lo que quiere hacer.

    EDITAR después de su edición:

    usa una condición IF .

    Algo como esto :

      var cellG = '' if(cell.indexOf('D')!=-1){ // = if you edit data in col D cellG = sheet.getRange('G'+ sheet.getActiveCell().getRowIndex()).getValue() // add more condition if necessary and/or send your mail (cellG contains the value in column G of the active row } Logger.log(cellG) 

    La forma correcta de rastrear un evento de cambio de celda es usar el objeto de evento “e” con el activador onEdit. El objeto de evento contiene el rango que se editó y, por lo tanto, siempre puede obtener el contenido de la celda que se modificó.

     function sendNotification(e){ var range = e.range; range.setNote('Last modified: ' + new Date()); } 

    NOTA: El nombre de la función no debe estar en Editar, que es un nombre especial en el script de aplicaciones. La función onEdit no permitirá enviar correos electrónicos debido a LIMITED authMode.

    Aquí hay un script de aplicaciones que permite enviar un correo electrónico si se edita una celda en un rango específico. También permite enviar toda la fila, columna completa o un rango personalizado para enviar en el correo electrónico de notificación.