繁体   English   中英

自定义Google表格功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM