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

标签 function google-apps-script google-sheets duplicates

我正在尝试比较预定义范围内的两个 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.

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

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

谢谢!

最佳答案

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

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

function myFunction(reference) {
   var range = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(reference);
   var firstColumn = range.getColumn();
   // do something
}

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

关于function - 如何将范围传递到 Google 电子表格中的自定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36481566/

相关文章:

javascript - 在 Google Scripts 中将 JS 变量传递给 HTML

google-apps-script - 在脚本中排序时可以指定标题行吗?

google-apps-script - match() 不适用于数字字段

javascript - 在 Zapier 代码上使用外部 javascript 库或 SDK

python - 所有 tkinter 函数在程序启动时运行

c++ - 是否可以将 std::move 对象移出函数? (C++11)

jquery - 为什么使用单击事件处理程序时会执行非匿名函数?

mysql - 如何在MYSQL用户定义函数中通过另一个字符串变量引用局部变量名?

google-apps-script - 我如何每秒调用一次谷歌脚本触发器?

regex - 使用 REGEXTRACT 提取 Google 表格 ID