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

anu*_*neo 5 function duplicates google-sheets google-apps-script

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

我知道谷歌可以让你通过工具比较工作表,但我需要一个更自定义的比较,因此功能。

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

    function myFunction(range) {
    var firstColumn = range.getColumn();
    // loop over the range
    }
Run Code Online (Sandbox Code Playgroud)

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

    error: TypeError: Cannot find function getColumn in object 1,2,3.
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Rub*_*bén 0

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

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

函数 myFunction(参考) {
   var range = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(reference);
   var firstColumn = range.getColumn();
   // 做一点事
}

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