如何将范围传递到Google Spreadsheets中的自定义函数?

时间:2016-04-07 16:04:27

标签: 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.

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

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

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

注意:getRangeByName同时使用命名范围和引用,它可能是比getRange更好的选择。

答案 1 :(得分:0)

Google Script将范围视为数组。因此,在处理数组时,可以更好地使用输入的范围。这是如何循环数组的好方法: https://stackoverflow.com/a/14991272/5372400

相关问题