У меня есть таблица Google, в которой я хочу использовать пользовательскую функцию, например
В конце концов в таблице будет произвольное количество этих примеров полей, и мне нужно подсчитать постоянно меняющиеся номера заказов для каждого поля клиента.
Я сделал триггер onEdit, но похоже, что эта функция запускает всю таблицу данных, вызывая ошибку:
«Начальный ряд диапазона слишком мал. At countOrders (Code: 25)».
Я думаю, что проблема в том, что функция не привязана к ячейке, в которую я ее поместил, и код выполняется относительно ячейки.
/*
This function counts the rows above the current row, up until the predefined header
*/
function countOrders() {
//CHANGEABLE SETTINGS
var HEADERTEXT = "Odrenummer" //What kind of text to look for
var COLUMN = 1 // What column to search for the header
var ACTIVEPOS = 5 // Where to look for the active/passive field
// Open current spreadsheet, and get the rownumber where the function is run
var sheet = SpreadsheetApp.getActiveSheet()
var cell = sheet.getActiveCell()
var rowPointer = cell.getRow()
// Initialize the count variabel,
// and make the rowPointer point to the row above the function
var count = 0
rowPointer--
// Count rows between
while (data != HEADERTEXT){
var range = sheet.getRange(rowPointer,COLUMN)
var data = range.getValue()
rowPointer--
// only count up if the ordernumber is not empty
if (data != ""){
count ++
}
}
// Is the status active?
var state = sheet.getRange(rowPointer,ACTIVEPOS);
state = state.getValue()
// Return the counted rows, minus the header
if (state == "Aktiv"){
return count-1
}
return 0
}
function onEdit(e) {
countOrders();
}
function onChange(e) {
countOrders();
}
Я ожидаю, что вывод обновится, если я добавлю больше заказов или если я изменю статус поля с «Актив» на «Пассив».
Я также ожидаю, что смогу скопировать и вставить область для создания второй области ниже, чтобы код работал по отношению к ее положению.