email - sheets - on open google apps script
Cómo activar una notificación por correo electrónico cuando el valor de la celda se modifica por función (1)
Puede utilizar un script simple que se ejecuta en un desencadenador de temporizador y comprueba si hay alguna modificación en una columna específica en su hoja.
Utilizo un script así para muchas tareas, incluida la supervisión de calendario y hojas.
A continuación se muestra un código de prueba que funciona en la columna F, debe ejecutarlo una vez manualmente para crear el valor scriptProperties que utilizo para detectar cambios.
Luego, cree un disparador de tiempo para ejecutarlo cada hora o cualquier otro valor de temporizador que considere útil.
El único problema sería si tienes una hoja muy larga, podrías alcanzar el límite de longitud de las propiedades ... (en este momento no recuerdo la longitud máxima, tendré que comprobar ;-)
Código:
function checkColumnF() {
var sh = SpreadsheetApp.getActiveSheet();
var values = sh.getRange(''F1:F'').getValues().join(''-'');
if(PropertiesService.getScriptProperties().getKeys().length==0){ // first time you run the script
PropertiesService.getScriptProperties().setProperty(''oldValues'', values);
return;
}
var oldValues = PropertiesService.getScriptProperties().getProperty(''oldValues'').split(''-'');
var valuesArray = values.split(''-'');
while (valuesArray.length>oldValues.length){
oldValues.push(''x''); // if you append some rows since last exec
}
Logger.log(''oldValues = ''+oldValues)
Logger.log(''current values = ''+valuesArray)
for(var n=0;n<valuesArray.length;n++){
if(oldValues[n] != valuesArray[n]){ // check for any difference
sendMail(n+1,valuesArray[n]);
}
}
PropertiesService.getScriptProperties().setProperty(''oldValues'', values);
}
function sendMail(row,val){
Logger.log(''value changed on row ''+row+'' value = ''+val+'' , mail sent'');
// uncomment below when you are sure everything runs fine to avoid sending dozens of emails while you test !
//MailApp.sendEmail(Session.getActiveUser().getEmail(),''value changed in your sheet'',''Row ''+row+'' is now ''+val);
}
Me gustaría crear una Hojas de cálculo de Google con desencadenantes de eventos. Estoy usando Google Apps Script.
Logré, gracias a Stack Overflow, crear una Hojas de cálculo de Google con una notificación de correo automático cuando un usuario modificó una celda.
Ahora me gustaría saber si esto es posible cuando una función modifica la celda (no la modificación del usuario), como por ejemplo:
if (today() >= B3 ; "late" ; "not late")
La función verifica la fecha y da el resultado "tarde" o "no tarde".
Cuando se alcanzan los plazos, la función volverá "tarde" y se enviará un correo electrónico para avisarme. El correo del cuerpo tendría el valor de la celda en la columna B, D y E y en la misma fila de la celda modificada (sé cómo hacer esto usando e.source, getRange
y getRow
)
Hasta ahora, he intentado esto, pero no está funcionando
function sendNotification(e) {
if("F" == e.range.getA1Notation().charAt(0)) {
if(e.value == "Late") {
//Define Notification Details
var recipients = "[email protected]";
var subject = "Deadlines" ;
var body = "deadline reached";
//Send the Email
MailApp.sendEmail(recipients, subject, body);
}
}
}
¿Cómo puedo configurar las notificaciones por correo cuando las celdas en la columna F tienen el valor "tardío" (siendo "tardío" el resultado de una función)?