google-apps-script - 将自变量/参数从 Google Sheets 自定义函数传递到脚本函数

标签 google-apps-script google-sheets arguments custom-function

我被困在一些基本的东西上。如何将参数传递给 Google 表格自定义函数。

我在 Apps 脚本代码编辑器中定义了一个函数:

function usageByMonth(range,theDate) {
    // do something with the arguments passed
}

在我的 Google 工作表中,该函数用作

=usageByMonth('Source Meter Readings'!A5:A,B1)

当尝试调试该函数时,我发现两个参数“未定义”。我查看了很多帖子,甚至直接从示例中复制了函数,结果相同。

最佳答案

从代码编辑器运行函数不会检索参数。在这种情况下,参数将始终是未定义的。对于使用 onEdit() 简单触发器等情况也是如此。将参数传递给函数的唯一方法是在电子表格单元格中输入有效的自定义函数。

如果您想从代码编辑器测试自定义函数的代码,则必须对参数值进行“硬编码”。

此外,当在工作表中计算自定义函数时,Logger.log() 不会将任何内容记录到日志中。

从一个简单且可行的自定义函数开始,并在此基础上进行构建。

如果您想将范围传递到自定义函数的代码中,您必须了解什么是二维数组:

二维数组:

[  [inner Array One],  [inner Array Two], [etc]  ]

将某个范围内的数据放入二维数组中。有一个外部数组和内部数组。内部数组的元素数量与范围内的列数一样多。

[  ['single value from first column', 'single value second column']  ]

上面的二维数组仅适用于 1 行两列。

因此,要创建一个简单的自定义函数作为测试,请创建一个函数:

function myCustomFunction(argOne) { 
  return argOne[0][0];
};

如果范围是A1:B5,自定义函数将返回A1中的值;

=myCustomFunction(A1:B5)

确定您的参数是否已传递到 .gs 服务器函数中的唯一方法是您是否返回结果。

有些输入无法使用。如果您使用不允许的输入,则(引用文档):

If a custom function tries to return a value based on one of these volatile built-in function, it will display Loading... indefinitely.

例如,您不能使用 NOW() 或 RAND() 作为参数。

关于google-apps-script - 将自变量/参数从 Google Sheets 自定义函数传递到脚本函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021323/

相关文章:

javascript - 替换数组中的值

google-apps-script - 将 Google Script 复制到剪贴板和 mailto [问题]

node.js - 这个 promise 有什么问题?

google-sheets - 使用条件过滤列 Google 表格

javascript - 如何从 Google 电子表格中读取正确的时间/持续时间值

python - 为什么/为什么有些类需要所有可能的参数,而有些则不需要?

c++ - 如何将表达式作为参数/参数传递?

google-apps-script - 如何将 Google Apps 脚本 blob 转换为 base64 编码的字符串?

c - 如何在函数内初始化和分配 char** 参数

google-apps-script - 如何在 Google Apps 脚本中获取新创建的文档(("application/pdf")?