Оператор GAS OR игнорирует оба теста

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

Я не уверен, то ли это то, как я справляюсь ||, то ли что-то еще, чего я не вижу.

В этом примере лист 1 виден, поэтому первая часть теста будет пройдена.

Когда вы говорите "проигнорил", что вы имеете в виду?

VLAZ 22.05.2019 11:28

Этого не должно происходить — код, который у вас есть, должен работать нормально.

Jack Bashford 22.05.2019 11:29
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
2
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
(sheets[i].isSheetHidden()!= true || sheets[i].getSheetName()!= 'Sheet1')

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

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

Другие вопросы по теме