[英]Comparing values of two different cells evaluate to false - Google Apps Script
我是 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); }
value1
和value2
是具有以下格式[[]]
数组,因为您使用了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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.