2017-03-09 101 views
0

我想比較兩個細胞,並根據它們是否相等或不發送不同的電子郵件。有關於這個主題閱讀幾篇文章後,我遺憾的是不明白爲什麼用===下面的對比總是給出了結果,該細胞是不同的,即使我比較同一細胞:谷歌腳本:與===的細胞比較總是給出細胞是不同的

function SendEmail() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
    var lastRow = sheet.getLastRow(); 
    var ui = SpreadsheetApp.getUi(); // var file =  SpreadsheetApp.getActiveSheet(); 
    if (sheet.getRange(2,10) === sheet.getRange(2,10)) { 
    MailApp.sendEmail("[email protected]", "test", "not equal!"); 
    } else { 
    MailApp.sendEmail("[email protected]", "test", "equal!"); 
    } 
    } 

它如果我使用!==也不起作用。

任何提示都被高度評價 - 謝謝!

+1

'getRange()'調用返回對象,並且兩個不同的對象總是不相等。 – Pointy

+0

這有點幫助,我要如何解決單元格才能獲得我期待的比較? – JSS

+0

將其更改爲ge值:'if(sheet.getRange(2,10).getValue()=== sheet.getRange(2,10).getValue()){'See [this thread](http:/ /stackoverflow.com/questions/19520642/get-and-set-value-of-a-cell-do-not-work)瞭解更多詳情 –

回答

1

我注意到你在比較相同的細胞?我改變它以比較單元格J2 & K2並記錄差異。我希望這有幫助。

function SendEmail() { 
 
var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var lastRow = sheet.getLastRow(); 
 
    var ui = SpreadsheetApp.getUi(); // var file =  SpreadsheetApp.getActiveSheet(); 
 
    Logger.log(sheet.getRange(2,10).getValue());// logs value of J2 
 
    Logger.log(sheet.getRange(2,11).getValue());// Logs the value of K2 
 
if(sheet.getRange(2,10).getValue() === sheet.getRange(2,11).getValue()) { 
 
    // MailApp.sendEmail("[email protected]", "test", "equal!"); 
 
    Logger.log('equal'); 
 
    } else { 
 
    // MailApp.sendEmail("[email protected]", "test", "not equal!"); 
 
    Logger.log('not equal'); 
 
    } 
 
    }

2

您需要比較單元格中的而不是範圍本身。

如果你正在處理的單細胞,這很簡單:

if(sheet.getRange(2,10).getValue() === sheet.getRange(2,10).getValue()) 

不過,如果你想比較多個單元格的範圍是比較複雜的,因爲你需要比較值的數組。

0

返回類型爲getRange()方法是範圍內,這從對象繼承。對象是引用類型,除非被比較的變量指向同一對象實例,否則永遠不會被視爲相等。

如上所述,您需要在範圍內調用getValue()方法,該範圍將返回單元格的內容並比較值。