GAS OR运算符使两个测试都被忽略

时间:2019-05-22 09:17:27

标签: javascript google-apps-script or-operator

我有此功能循环遍历所有工作表,如果工作表未隐藏,请将工作表名称添加到数组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);
}

我还想测试特定的工作表名称,我可以使用

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

但是,当我将它们与||或运算符放在一起时,两个测试都将被忽略。

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

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

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

1 个答案:

答案 0 :(得分:1)

(sheets[i].isSheetHidden()!= true || sheets[i].getSheetName()!= 'Sheet1')
如果当前工作表未隐藏或未命名为“ Sheet1”,则

将返回true。换句话说,如果当前工作表命名为“ Sheet1”,而却被隐藏,它将仅返回 true 。那可能不是您想要的,是吗?也许您正在寻找的是&& AND逻辑运算符?

此外,我建议您研究格式化代码,为什么应该使用!==而不是!=,并参阅this question来获得与使用var a = [];相比的信息。 var b = new Array();