2017-03-09 74 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()方法,该范围将返回单元格的内容并比较值。