Простой Google Script не работает - PullRequest
2 голосов
/ 30 апреля 2011

Я решил использовать Google Scripts, когда это возможно, при использовании электронных таблиц, просто чтобы начать увеличивать знания.НО я не обучен и застрял довольно быстро.

Я видел какой-то код на YouTube для другого скрипта, но я думал, что извлек то, что мне нужно, и мог заставить это работать ...

function y_add_up_function() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange["I2:J15"];
  var data = range.getValues();
  var sum = 0;

  for (var i = 0; i < 14; ++i)
  {
    var row = data[i];
    if(row[1] == "y")
    {
      sum = sum + row[0];
    }
  }
  return sum;
}

Это моя таблица .Я пытаюсь просто заставить SS сложить, где я поставил галочку y рядом с ценой, но получаю сообщение об ошибке:

TypeError: Невозможно вызвать метод "getValues"неопределенного.(Строка 5)

Пожалуйста, научите меня, что я делаю не так ^ _ ^ !!!

Ура!

1 Ответ

5 голосов
/ 30 апреля 2011

Ошибка означает, что вы пытаетесь вызвать метод для неопределенного объекта. Если вы посмотрите на свой код, у вас есть range.getValues ​​(). Это означает, что диапазон не определен. Поэтому вам нужно посмотреть на присваивание диапазона: var range = sheet.getRange ["I2: J15"]. И вот в чем проблема, getRange - это метод, который нужно вызывать с круглыми скобками, то есть getRange («I2: J15»).

Вот рабочий код:

function y_add_up_function() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange("I2:J15"); // <-- fix here
  var data = range.getValues();
  var sum = 0;



  for (var i = 0; i < 14; ++i)
  {
    var row = data[i];
    if(row[1] == "y")
    {
      sum = sum + parseFloat(row[0].substring(2)); // <-- fix to get floats from "£ <number>"
    }
  }
  return sum;
}

Также обратите внимание, что, поскольку в столбце стоимости есть знаки фунта, вам необходимо раздеть знаки, чтобы получить число. Здесь я использовал .substring (2), но это не очень безопасно. Если вы, например, не забудьте поставить «£» в ячейке, номер будет прочитан неправильно. Я рекомендую поместить знак фунта в заголовок столбца или использовать более сложный метод для его удаления при разборе чисел.

Вы можете, например, использовать строку [0] .replace (/ ^ [0-9.] / G, ''). Это заменит все символы, которые не являются ни цифрами, ни десятичными точками. Здесь нет проверки ошибок, но я думаю, что этого достаточно в личной таблице.

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