Cell.getValue неправильно сравнивает значения - PullRequest
0 голосов
/ 25 мая 2020

Я новичок в скрипте приложений Google, и у меня возникла проблема. Когда я пытаюсь сравнить значение ячейки с двумя целыми числами, это срабатывает каждый раз. В моей таблице есть только несколько значений, которые соответствуют этим ограничениям. Вот мой код:

  function CHECK_CORRELATION() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    var rangeData = sheet.getDataRange();
    var lastColumn = rangeData.getLastColumn();
    var lastRow = rangeData.getNumRows();
    var counter = 0;
    var counter2 = 0;
    var values = rangeData.getValues()
    for (var j = 2; j <= lastRow; j++){
      var cell = sheet.getRange(j, 8)
      if (cell.isBlank()) {
        continue;
      } else {
        if (0.9<=cell.getValue()<=1.1){
          Logger.log(cell.getValue());
          counter++;
        }
        counter2++;
      }
    }
    Logger.log(counter)
    Logger.log(counter2)
    if (counter>(counter2/2)) {
      return "The idea that a student will have motivation and has a part time job co-occur"
    } else {
      return "The idea that a student will have motivation and has a part time job does not co-occur"
    }
  }

Это регистратор

Он показывает, что счетчик 62 и counter2 62, хотя он не должно быть.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Это выражение работает не так, как вы думаете:

0.9<=cell.getValue()<=1.1

Вышеуказанное, потому что <= - это условный оператор , который требует двух операндов, поэтому выражение сравнивает результат первого сравнения (истина или ложь) с числом.

Попробуйте заменить приведенное выше выражение на

0.9 <= cell.getValue() && cell.getValue() <= 1.1

&& - это логический оператор AND

0 голосов
/ 25 мая 2020

У тебя уже все отлично! Я только что немного прибрал твою на 1009. Я предполагаю, что ваши данные находятся в 8-м столбце, верно?

Сообщите мне, решило ли это вашу проблему.

function CHECK_CORRELATION() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var lc = sheet.getLastColumn();
  var lr = sheet.getLastRow();
  var rangeData = sheet.getRange(2, 1, lr -1, lc);
  var lastColumn = rangeData.getLastColumn();
  var lastRow = rangeData.getNumRows();
  var counter = 0;
  var counter2 = 0;
  var values = rangeData.getValues();
  
  for (var j = 0; j < values.length; j++)
  {
    var row = values[j];
    var dataToCheck = row[7];
    if ((dataToCheck != "" || dataToCheck != undefined) && dataToCheck >= 0.9 && dataToCheck <= 1.1)
    {
      counter++;
      }
      else
      {
        counter2++;
      }
      
    }
  
  Logger.log(counter)
  Logger.log(counter2)
  if (counter>(counter2/2)) 
  {
    return "The idea that a student will have motivation and has a part time job co-occur"
  } 
  else 
  {
    return "The idea that a student will have motivation and has a part time job does not co-occur"
  }
}
...