Google Apps Script <= проблема оператора - PullRequest
0 голосов
/ 06 июля 2018

Мы пишем функцию для анализа обозначений номеров недель из столбца электронной таблицы Google в формате W # -W # (например, W1-10, W3-13 и т. Д.). По какой-то причине скрипт приложения обрабатывает < = оператор почти , как если бы это был оператор =.

Функция:

for (var row = 0; row < qBow.length; row++) {
  var wRange = qBow[row][6];
  var wRsplit = wRange.split('W').join('');
  var wNums = wRsplit.split('-');
  var currentWnum = activeSheet.getName().substring(1);

  Logger.log('row: ' + row + ' currentWnum: ' + currentWnum + ' wNums[0]: ' + wNums[0] + ' wNums[1]: ' + wNums[1]);

  if (currentWnum >= wNums[0] && currentWnum <= wNums[1]) {
    Logger.log('row: ' + row + ' currentWnum: ' + currentWnum + ' wNums[0]: ' + wNums[0] + ' wNums[1]: ' + wNums[1]);
  }
}

Пример вывода из первого Logger.log ():

row: 8 currentWnum: 4 wNums[0]: 3 wNums[1]: 13
...
row: 12 currentWnum: 4 wNums[0]: 4 wNums[1]: 13
...
row: 18 currentWnum: 4 wNums[0]: 3 wNums[1]: 13
...
row: 20 currentWnum: 4 wNums[0]: 3 wNums[1]: 13

Полный вывод из второго Logger.log ():

row: 106 currentWnum: 4 wNums[0]: 4 wNums[1]: 5
row: 138 currentWnum: 4 wNums[0]: 2 wNums[1]: 4
row: 139 currentWnum: 4 wNums[0]: 2 wNums[1]: 4
row: 151 currentWnum: 4 wNums[0]: 3 wNums[1]: 4

Как видите, он пропустил все строки, кроме тех, где currentWnum равен wNum [1], и одна строка, где wNum [1] равен 5. Мы протестировали его, заменив wNums [1] в условный оператор со статическим числом, и он ведет себя правильно. Есть идеи, что здесь происходит?

1 Ответ

0 голосов
/ 06 июля 2018

Похоже, вы используете <= для строк . Я ожидаю, что они будут сравниваться лексикографически - так, например, «13» меньше, чем «4».

Я предлагаю вам преобразовать все значения в числа (например, с parseInt) перед выполнением любых сравнений. Это будет для каждого элемента в wNums, а также currentWnum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...