如何将范围传递给 Google 电子表格中的自定义函数?

Posted

技术标签:

【中文标题】如何将范围传递给 Google 电子表格中的自定义函数?【英文标题】:How to pass a range into a custom function in Google Spreadsheets? 【发布时间】:2016-07-28 15:39:54 【问题描述】:

我正在尝试在预定义的范围内比较两个谷歌工作表(重复值)..

我知道 google 允许您通过工具比较工作表,但我需要更自定义的比较功能。

我想创建一个接受范围的函数...类似于:

    function myFunction(range) 
    var firstColumn = range.getColumn();
    // loop over the range
    

问题是当我尝试这样做时,参数似乎只是将值传递给函数。因此,我不能使用任何 Range 方法,例如 getColumn()。当我尝试这样做时,它会给出以下错误:

    error: TypeError: Cannot find function getColumn in object 1,2,3.

如何向我的自定义函数之一发送实际范围而不仅仅是值?

注意-在我的例子中,范围是整个工作表(两者都需要比较)。

谢谢!

【问题讨论】:

【参考方案1】:

Google 脚本将范围视为数组。因此,您可以在使用数组时更好地使用输入的范围。这是如何遍历数组的好技术: https://***.com/a/14991272/5372400

【讨论】:

【参考方案2】:

自定义函数参数在传递给自定义函数的代码之前计算,因此range 将是单个值或值数组。

您可以将范围的引用作为字符串传递,即=myFunction("Sheet!A:Z"),然后使用类似以下的内容:

功能我的功能(参考) var range = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(reference); var firstColumn = range.getColumn(); // 做一点事

注意:getRangeByName 可用于命名范围和引用操作系统,它可能是比 getRange 更好的选择。

【讨论】:

以上是关于如何将范围传递给 Google 电子表格中的自定义函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组传递到 Google 电子表格的 Google App 脚本中的查询字符串

如何将 Google Apps 脚本的范围缩小到特定文件

Google电子表格:将日期添加到由inputBox设置的日期,填充范围

自定义公式 Google 电子表格

将绑定传递给组件中的嵌入范围

使用 TypeScript 时如何将 prop 传递给 material-ui@next 中的自定义根组件?