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();
相比
我让这个函数遍历所有 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();