2013-02-10 91 views
0

我有一個腳本,當某個度量標準超出X範圍並且僅當某人輸入了新度量標準時,纔會向圖表URL發送郵件。每次運行腳本時都會發送郵件,所以我知道setProperty不起作用,並且「if」語句不起作用,因爲只有在X爲TRUE時它纔會發送郵件。在Google的「if」中使用它設置腳本屬性

片... https://docs.google.com/spreadsheet/ccc?key=0Ai_2YLvaQba0dHN1dWFpY0ZSbGpudWF4cTJYNlFwNHc&usp=sharing

我的代碼...

function myAverages() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var value = ss.getSheetByName("EmailServices").getRange("P2").getValue().toString(); 
    var outside = ss.getSheetByName("EmailServices").getRange("S2").getValue().toString; 
    var mailed = ss.getSheetByName("EmailServices").getRange("T2").getValue().toString(); 
    var stemiAverage = ss.getSheetByName("EmailServices").getRange("R2").getValue().toString(); 
    var stemiChart = ss.getSheetByName("EmailServices").getRange("U2").getValue().toString(); 
    var last = ScriptProperties.getProperty('last'); 

    //if "value" is not equal to ScriptProperty "last" AND "outside" is TRUE, then mail 
    if(value =! last, outside = "TRUE") 

    { 
    MailApp.sendEmail("[email protected]", "Metric Warning", 
    "Yearly STEMI Average has fallen below 65%, it is now: " + stemiAverage + "%" + 
    "\n\nTo see the current trending chart " + stemiChart + "\n\n The sheet that calculated this is here " + ss.getUrl()); 
    ScriptProperties.setProperty('last','value'); 
    } 
} 

感謝你能借給任何幫助。我在教自己這個東西,感覺非常像一個newby。在發佈之前,我已經嘗試了一百或更多的組合。

回答

2

爲補充菲爾的答案,下面您的評論,有在你的腳本另一個錯誤:

ScriptProperties.setProperty("last","value"); 

應該

ScriptProperties.setProperty({'last':value},true); 

true參數是可選的,請參閱ScriptPropert上的documentation它可以讓您刪除所有其他密鑰。

所以你與修正功能齊全是:

function myAverages(){ 
     var ss = SpreadsheetApp.getActiveSpreadsheet(); 
     var value = ss.getSheetByName("EmailServices").getRange("P2").getValue().toString(); 
    Logger.log('value = '+value)  
     var outside = ss.getSheetByName("EmailServices").getRange("S2").getValue().toString(); 
    Logger.log('outside='+outside) 
     var mailed = ss.getSheetByName("EmailServices").getRange("T2").getValue().toString(); 
    Logger.log('mailed = '+mailed)  
     var stemiAverage = ss.getSheetByName("EmailServices").getRange("R2").getValue().toString(); 
     var stemiChart = ss.getSheetByName("EmailServices").getRange("U2").getValue().toString(); 
     var last = ScriptProperties.getProperty('last'); 
    Logger.log('last='+last)  
     if(value != last && outside == "true"){ 
      MailApp.sendEmail("[email protected]", "Metric Warning", 
      "Yearly STEMI Average has fallen below 65%, it is now: " + stemiAverage + "%" + 
      "\n\nTo see the current trending chart " + stemiChart + "\n\n The sheet that calculated this is here " + ss.getUrl()); 
      ScriptProperties.setProperty({'last':value}); 
    Logger.log('mail sent') 
     } 
    } 
+0

Serge最終幫助我修復了代碼,我感謝所有的幫助和評論,我只是在學習這些東西,Serge告訴我如何使用記錄器以及我們離開在上面的解決方案中,非常酷的東西。再次感謝Serge – 2013-02-10 23:40:49

+0

不客氣,很高興它在GAS旅程中有所幫助,祝你好運;-) – 2013-02-10 23:44:34

0

您需要使用AND運算符:&&

而且,檢查相等性需要2等號:==

所以一定要試試這個:

if (value!=last && outside=="TRUE") { 
+0

我似乎可以得到ScriptProperties利用上班「最後」,而不是「最後一個」。但是如果我把&或&&符號放在我的if語句中,我會得到一個錯誤無效的賦值左邊。 (第1行)。我將在上面的代碼中更正ScriptProperties,但是我仍然需要制定AND outside =「TRUE」。 – 2013-02-10 22:15:59

+0

不,ScriptProperties本身也不起作用。 :( – 2013-02-10 22:20:50

+0

請看我對此的回答... – 2013-02-10 22:27:45

相關問題