首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建一个以其他函数为参数的Apps脚本函数

创建一个以其他函数为参数的Apps脚本函数
EN

Stack Overflow用户
提问于 2022-03-30 08:38:55
回答 2查看 40关注 0票数 0

我想在APPSCRIPT中创建一个函数,它使用另一个APPSCRIPT函数作为参数。

我试过这个:

代码语言:javascript
运行
复制
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())

我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2022-03-30 09:05:28

虽然我不确定是否能正确理解您的目标,但下面的修改脚本是您的预期结果?

修改脚本:

代码语言:javascript
运行
复制
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与一起使用。

代码语言:javascript
运行
复制
- 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")作为文本值。请小心点。
票数 0
EN

Stack Overflow用户

发布于 2022-03-30 09:21:02

我认为把函数作为参数传递没有问题:

代码语言:javascript
运行
复制
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

}

你可以在这里试试:

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71674078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档