我正在尝试编写一个看起来像这样的自定义函数:
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
解释为范围。
我完全难过......任何帮助,指向一个好的语法参考站点或一些好的教程也值得赞赏。这是我的问题的答案;)
答案 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中的条目填充目标单元格。希望这会有所帮助。