【问题标题】:Comparing values of two different cells evaluate to false - Google Apps Script比较两个不同单元格的值评估为 false - Google Apps 脚本
【发布时间】:2020-09-17 10:07:05
【问题描述】:

我是 JavaScript 新手,我正在开发一个电子表格,试图隐藏基于单元格内容的列。

想法是:当值 1 和值 2 相同时(两个不同单元格的值相同),该列保持为未隐藏状态。当不相同时,它会隐藏。但是,每次 OnEdit 时,列都会隐藏。

另外,当值相同时,我无法将其取消隐藏。有什么想法吗?

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Auto media planner");      // Enter sheet name
  var cell1 = s.getRange('C7');
  var cell2 = s.getRange('AX6');
  var value1 = cell1.getValues();
  var value2 = cell2.getValues();
  var column = s.getRange("D1");

  if (value1!=value2){  
  s.hideColumn(column);
}
  

if (value1==value2){ 
  s.unhideColumn(column);
}  

【问题讨论】:

  • 如果是单个单元格使用 getValue 而不是 getValues ....... var value1 = cell1.getValue(); var value2 = cell2.getValue();

标签: javascript google-apps-script google-sheets


【解决方案1】:

解释:

  • 在您的代码中,value1value2 是具有以下内容的数组 格式化[[]],因为你使用getValues()
  • 不能比较两个数组,就像比较两个值一样。这个value1==value2 返回false,即使数组中的值相同。
  • 要正确比较两个数组,一种方法是运行:JSON.stringify(value1)==JSON.stringify(value2) 如果值相同,这将导致 true

看这个例子:

val1 = [[0.0]];
val2 = [[0.0]];
  
console.log(val1 ==  val2) // Returns false
console.log(JSON.stringify(val1)==JSON.stringify(val2));  // Returns true

解决办法:

只需替换:

var value1 = cell1.getValues();
var value2 = cell2.getValues();

与:

var value1 = cell1.getValue();
var value2 = cell2.getValue();

这里是完整的解决方案:

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Auto media planner");      // Enter sheet name
  var cell1 = s.getRange('C7');
  var cell2 = s.getRange('AX6');
  var value1 = cell1.getValue();
  var value2 = cell2.getValue();
  var column = s.getRange("D1");

  if (value1!=value2){  
  s.hideColumn(column);
}
  

if (value1==value2){ 
  s.unhideColumn(column);
} 
}

【讨论】:

  • 这是一个不拾取数组而是拾取单个单元格的值的问题!因此从 valueS 中删除 s 就足够了!嗯,这很有意义。通常是最微小的事情搞砸了整个事情! :D 非常感谢马里奥斯!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多