GAS OR оператор игнорирует оба теста - PullRequest
0 голосов
/ 22 мая 2019

У меня есть эта функция, проходящая по всем листам, и если лист не скрыт, добавьте имя листа в массив 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 Ответ

1 голос
/ 22 мая 2019
(sheets[i].isSheetHidden()!= true || sheets[i].getSheetName()!= 'Sheet1')

вернет true, если текущий лист не скрыт или не назван «Лист1».Или, другими словами, вернет true , только если текущий лист называется «Лист1» и скрыт .Это, вероятно, не то, что вы хотите, не так ли?Возможно, вам нужен логический оператор && AND?

Кроме того, я бы посоветовал вам изучить код форматирования, почему вы должны использовать !== вместо !=, и посмотреть этот вопрос для получения информации об использовании var a = []; по сравнению с var b = new Array();

...