Я новичок в скрипте Google. Я пытаюсь написать пользовательскую функцию, которая работает с формулой массива в листах Google. Моя реализация не возвращает рассчитанное значение. Моя цель - предоставить обновленный расчет для данных, собранных в форме Google.
В двух словах, я хочу умножить число на сумму, основанную на пороге, основанном на типе. например, множитель будет применяться только для суммы, превышающей пороговое значение.
Используя следующий лист Google
count, category, amount
2, a_type,=arrayformula(amount_calc(a2:a, b2:b, 25))
4, b_type,
7, a_type,
5, c_type,
Я хочу получить следующий результат, используя формулу массива
2, a_type, 0 //threshold: count>2
4, b_type, 75 //threshold: count>1
4, a_type, 50 //threshold: count>2
5, c_type, 25 //threshold: count>4
Я написал функцию "amount_cal c"
function amount_calc(count, cat, multiplier) {
var amount=0
if(cat=="a_type" && count > 2) {
amount=(count - 2) * multiplier
} else if(cat=="a_type" && count <= 2) {
amount=0
}
if(cat=="b_type" && count > 1) {
amount=(count - 2) * multiplier
} else if(cat=="b_type" && count <= 1) {
amount=0
}
if(cat=="c_type" && count > 4) {
amount=(count - 4) * multiplier
} else if(cat=="b_type" && count <= 4) {
amount=0
}
return amount
}
Собственная пользовательская функция, как написано, дает следующий результат в листе Google
2, a_type, 0
4, b_type, 0
4, a_type, 0
5, c_type, 0
Из того, что я могу назначения в операторах if не обновляют глобальную переменную "amount"
Альтернативно, я неудачно попытался собрать результаты в массиве количества следующим образом
function amount_calc(count, cat, multiplier) {
var amount=[]
for (var i=0; i<count.length; i++ {
if(cat=="a_type" && num > 2) {
amount.push[i]((count - 2) * multiplier)
} else if(cat=="a_type" && count <= 2) {
amount.push[i](0)
}
if(cat=="b_type" && num > 1) {
amount.push[i]((count - 1) * multiplier)
} else if(cat=="b_type" && count <= 1 {
amount.push[i](0)
}
if(cat=="c_type" && num > 4) {
amount.push[i](count - 4) * multiplier)
} else if(cat=="b_type" && count <= 4 {
amount.push[i](0)
}
return amount
}
Результат ошибка «Превышено максимальное время выполнения (строка 0)».
Очевидно, я не понимаю функцию формулы массива. Я ошибаюсь, думая, что это итерация функции в каждой строке? Почему глобальная переменная «сумма» не обновляется операторами if. Любая помощь или разъяснения будут оценены. Спасибо, Кенни