我想比较两个单元格,并根据它们是否相等发送不同的电子邮件。在阅读了几篇关于这个主题的文章之后,遗憾的是我不明白为什么以下与===的比较总是会给出细胞不同的结果,即使我比较相同的细胞:
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("ab@gmail.com", "test", "not equal!");
} else {
MailApp.sendEmail("ab@gmail.com", "test", "equal!");
}
}
如果我使用它也不起作用!==。
任何提示都是高度赞赏的 - 谢谢!
答案 0 :(得分:2)
您需要比较单元格中的值而不是范围本身。
如果您正在处理单个单元格,这很简单:
if(sheet.getRange(2,10).getValue() === sheet.getRange(2,10).getValue())
但是,如果要将范围与多个单元格进行比较,则会更复杂,因为您需要比较值数组。
答案 1 :(得分: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("ab@gmail.com", "test", "equal!");
Logger.log('equal');
} else {
// MailApp.sendEmail("ab@gmail.com", "test", "not equal!");
Logger.log('not equal');
}
}
答案 2 :(得分:0)
getRange()方法的返回类型是Range,它继承自Object。对象是引用类型,除非被比较的变量指向同一个对象实例,否则永远不会被视为相等。
如上所述,您需要在将返回单元格内容的范围内调用getValue()方法并比较这些值。