2017-05-30 10 views
0

IMPORTHTML機能を使用してGoogleスプレッドシートにライブデータをインポートしました。私の必要条件は、セルの価値が特定の数を超えるたびに電子メールを送信する必要があるということです。私はGoogleスプレッドシートからのメール送信 "ONLY ONCE"

{ 
    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+ " !!!"); 
    } 
} 

、ウェブ上で次のよう見つかりましたが、これに伴う問題は、値がを超えた場合、それが3以下になるまで、私はそれが起こることを望んでいない電子メール毎分を送信し続けるということです。私はそれが3を超えている場合は一度だけ電子メールを送信し、次にダウンした後に再び3を超えた場合は次の電子メールが必要になります。また、私は3<it<10を作りたいと思う。どのように私はこれらの両方を行うのですか?

答えて

0

プロパティサービスを使用して、条件の現在の満足度が実行間ですでに処理されているかどうかを追跡できます。

{ 
    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 
    } 
} 
関連する問題