GAS OR 运算符忽略两个测试

GAS OR operator makes both tests ignored

我让这个函数遍历所有 sheet,如果 sheet 没有隐藏,将 sheet 名称添加到数组 out

function sheetnames() {

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  var out = new Array()
  for (var i=0 ; i<sheets.length ; i++) 
    if (sheets[i].isSheetHidden()!= true){
      out.push( [ sheets[i].getName() ] 
            )}
  Logger.log(out);
}

我还想测试特定的 sheet 名称,我可以使用

if (sheets[i].getSheetName()!= 'Sheet1'){

然而,当我将它们与 || OR 运算符放在一起时,两个测试都会被忽略。

if (sheets[i].isSheetHidden()!= true || sheets[i].getSheetName()!= 'Sheet1'){

我不确定这是我处理的方式 || 还是其他我没有看到的方式。

在此示例中,sheet1 是可见的,因此将通过测试的第一部分。

(sheets[i].isSheetHidden()!= true || sheets[i].getSheetName()!= 'Sheet1')
如果当前 sheet 未隐藏或未命名 'Sheet1',

将 return true。或者换句话说,如果当前sheet被命名为'Sheet1'[=,它将仅returntrue 25=]和是隐藏的。这可能不是你想要的,是吗?也许您正在寻找的是 && AND 逻辑运算符?

此外,我建议您查看格式化代码,了解为什么您应该使用 !== 而不是 !=,并查看 this question 以获取有关使用 var a = []; 的信息与 var b = new Array();

相比