自定义Google表格功能

时间:2014-02-21 16:32:40

标签: function google-apps-script arguments google-sheets date-range

我正在尝试编写一个看起来像这样的自定义函数:

function myFunction(arg1, arg2){
   //some calculations on the range described by these two arguments
   return value of the calculation
}

arg1是格式为A1

的电子表格中的单元格

arg2是第二个单元格引用A2

我需要这两个参数指向同一电子表格中另一个工作表的范围。有点像这样:range A1:A2 on Sheet2

当我使用代码"A1:A2"作为getRange()的参数时,我可以获得电子表格Sheet2并获取范围。

当我这样做时,事情变得糟糕:

var range = arg1 & ":" & arg2;
var sheetRange = sheet2.getRange(range);

我确信这里存在语法问题,导致函数无法将range解释为范围。

我完全难过......任何帮助,指向一个好的语法参考站点或一些好的教程也值得赞赏。这是我的问题的答案;)

3 个答案:

答案 0 :(得分:0)

即使你纠正了api和语法错误,它仍然会失败,因为自定义函数必须是确定性的。由于您传递范围名称而不是其值,如果再次传递相同范围但更改了范围值,则函数将返回先前的计算。 Tldr要么传递值而不是范围名称,要么不使用自定义函数。

答案 1 :(得分:0)

当您选择一系列值并将其传递给函数时,它们将作为数组显示在您的代码中,有关数组的更多信息,请查看此页面:http://javascript.info/tutorial/array

答案 2 :(得分:0)

我为你做了一个例子。请在此处查看:example

/**
 * custom function
 * 
 * @customfunction
 */
function myFunc(input){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet2');

if (input.map) {            // Test whether input is an array.
    return input.map(myFunc); // Recurse over array if so.
  } else {
    return sheet.getRange(1, input).getValue();
  }
}

它将来自sheet1的值的范围作为输入,但使用输入作为 Sheet2 中第1行的列号,使用表2中的条目填充目标单元格。希望这会有所帮助。