谷歌脚本:与===的细胞比较总是给出细胞是不同的

时间:2017-03-09 14:58:48

标签: javascript google-apps-script

我想比较两个单元格,并根据它们是否相等发送不同的电子邮件。在阅读了几篇关于这个主题的文章之后,遗憾的是我不明白为什么以下与===的比较总是会给出细胞不同的结果,即使我比较相同的细胞:

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

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

任何提示都是高度赞赏的 - 谢谢!

3 个答案:

答案 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()方法并比较这些值。