[英]Custom Google Sheets function
我正在尝试编写一个看起来像这样的自定义函数:
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
解释为范围。
而且我完全感到困惑...任何帮助,指向一个好的语法参考站点或一些好的教程的指导,也应受到赞赏。 正如我的问题的答案;)
即使在更正了api和语法错误之后,由于自定义函数必须是确定性的,它仍然会失败。 由于您传递的是范围名称而不是其值,因此,如果您再次传递相同的范围但范围值已更改,则函数将返回先前的计算。 Tldr要么传递值而不是范围名称,要么为此不使用自定义函数。
当您选择一个值范围并将其传递给函数时,它们将作为数组显示在代码中,有关数组的更多信息,请查看以下页面: http : //javascript.info/tutorial/array
我为你做了一个例子。 在这里检查: 示例
/**
* 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中的条目填充目标单元格,并将输入用作Sheet2中第一行的列号。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.