Ошибка означает, что вы пытаетесь вызвать метод для неопределенного объекта. Если вы посмотрите на свой код, у вас есть 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, ''). Это заменит все символы, которые не являются ни цифрами, ни десятичными точками. Здесь нет проверки ошибок, но я думаю, что этого достаточно в личной таблице.