我想在APPSCRIPT中创建一个函数,它使用另一个APPSCRIPT函数作为参数。
我试过这个:
function mainFunction(spreadsheetRange, secondaryFunction) {
// values = array of values retrieved from range
for (var i = 0; i < values.length; i = i+1) {
values[i] = secondaryFunction(values[i]);
}
// update the range with the new values
}
function function1() {
//something
}
function function2() {
//something
}
并在google单元格中运行(在导入所有这些函数之后)以下公式:=mainFunction(validrange, function2)
但是出现了这个错误:TypeError: fun is not a function
。
同样的情况发生在=mainFunction(validrange, function2())
我该如何解决这个问题?
发布于 2022-03-30 09:05:28
虽然我不确定是否能正确理解您的目标,但下面的修改脚本是您的预期结果?
修改脚本:
function mainFunction(spreadsheetRange, secondaryFunction) {
// values = array of values retrieved from range
for (var i = 0; i < values.length; i = i+1) {
values[i] = this[secondaryFunction](values[i]); // <--- Modified
}
// update the range with the new values
}
例如,在此修改中,当将values[i] = this[secondaryFunction](values[i])
.放到单元格中时,函数function2
与一起使用。
- But when I saw your function of `function2`, no arguments are used. So, in this case, `values[i]` is not given to `function2`. Please be careful about this.
"function2"
of =mainFunction(validrange, "function2")
作为文本值。请小心点。发布于 2022-03-30 09:21:02
我认为把函数作为参数传递没有问题:
function main() {
function mainFunction(func, arg) {
return func(arg);
}
function function1(num) { return num * 2 }
function function2(num) { return num * 3 }
var value = mainFunction(function1, 2);
console.log(value) // output ---> 4
var value = mainFunction(function2, 2);
console.log(value) // output ---> 6
}
你可以在这里试试:
function mainFunction(func, arg) {
return func(arg);
}
function function1(num) { return num * 2 }
function function2(num) { return num * 3 }
var value = mainFunction(function1, 2);
console.log(value) // output 4
var value = mainFunction(function2, 2);
console.log(value) // output 6
https://stackoverflow.com/questions/71674078
复制相似问题