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

问题描述 投票:0回答:3

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

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

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

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

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

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

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

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

谢谢!

function google-apps-script google-sheets duplicates
3个回答
0
投票

自定义函数参数在传递给自定义函数的代码之前进行计算,因此

range
将是单个值或值数组。

您可以将范围引用作为字符串传递,即

=myFunction("Sheet!A:Z")
,然后使用如下所示的内容:

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

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


0
投票

Google 脚本将范围视为数组。因此,您可以像使用数组一样更好地使用输入的范围。这是如何循环遍历数组的好技巧: https://stackoverflow.com/a/14991272/5372400


0
投票

在你的牢房里,你会这样做

=myFunction("A1")

然后在你的代码中

function myFunction(ref)
{
    var range = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(ref);
    // do something with range
}

getRangeByName 不再使用。

来源:https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangea1notation

© www.soinside.com 2019 - 2024. All rights reserved.