2017-05-30 5 views
0

J'ai importé des données en direct dans Google Spreadsheets en utilisant la fonction IMPORTHTML. Mon exigence est que je dois envoyer un email chaque fois que la valeur de la cellule dépasse un certain nombre. J'ai trouvé ce qui suit sur le Web,Envoyer des e-mails à partir de la feuille de calcul Google "UNIQUEMENT UNE FOIS"

{ 
    var ss = SpreadsheetApp.getActive(); 
    var sheet = ss.getSheetByName("Profit Ratio"); 

    var valueToCheck = sheet.getRange("D7").getValue(); 

    if(valueToCheck > 3) { 
     MailApp.sendEmail("zak*******@gmail.com", "Current Profit Ratio", "Current Profit Ratio is 1:" + valueToCheck+ " !!!"); 
    } 
} 

Mais le problème est que si la valeur va au-delà , il continue à envoyer des e-mails chaque minute jusqu'à ce qu'il passe en dessous de 3. Je ne veux pas que cela se produise . Je veux envoyer un e-mail une seule fois si cela dépasse 3, et le prochain e-mail doit être quand il va de nouveau au-delà de 3 après être descendu. En outre, je souhaite obtenir 3<it<10. Comment puis-je faire les deux?

Répondre

0

Vous pouvez utiliser le service de propriétés pour savoir si la satisfaction actuelle des critères a déjà été traitée entre les exécutions.

{ 
    var ss = SpreadsheetApp.getActive(); 
    var sheet = ss.getSheetByName("Profit Ratio"); 
    var valueToCheck = sheet.getRange("D7").getValue(); 
    var prop = PropertiesService.getDocumentProperties(); // Quick access to properties 


    if (valueToCheck > 3       // Between 3 and 10 
     && valueToCheck < 10 
     && !prop.getProperty("processed") { // Has not been dealt with 
    MailApp.sendEmail(
     "zak*******@gmail.com", 
     "Current Profit Ratio", 
     "Current Profit Ratio is 1:" + valueToCheck + " !!!"); 
    prop.setProperty("processed", true);  // Switch the flag so we don't send any more emails 
    } else if (valueToCheck <= 3) {    // You might want to add || value to check >= 10 here? 
    prop.setProperty("processed", false);  // Set property to false so that next time the value exceeds 3 we process it again 
    } 
}