Google电子表格脚本:创建简单函数时“无法在对象表中找到函数getRange”

时间:2014-02-24 18:05:22

标签: javascript google-apps-script google-sheets

对不起,对于这个愚蠢的问题,但我已经搜索了整个互联网,但我找不到一个好的教程来学习如何在Google SpreadSheet Script中编程。

我想为练习做一个非常简单的功能。

function simplesum(input) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets();
  var range = sheet.getRange(input);

var x = 0;

for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {

var cell = range.getCell(i, j);

x += (cell.getValue());
}
}

return x;
}

我知道我可以使用= sum()做同样的事情。这里的想法是学习如何编程。

当我尝试在单元格中使用我的函数时:(即:= simplesum((A1:A8))它给出一个错误说:“TypeError:在对象表中找不到函数getRange。(第4行)”

我该怎么办?

再次,抱歉这个愚蠢的问题......

3 个答案:

答案 0 :(得分:4)

在这种情况下,您将在电子表格单元格中调用Google Apps脚本函数作为自定义函数

将范围传递给电子表格单元格中调用的自定义函数时,不会传递范围对象或范围引用,而是传递2-D Javascript数组值。所以你的自定义函数应该只处理那个数组。

function simplesum(input)
{
  var x = 0;
  for (var i = 0; i < input.length; i++)
  {
    for (var j = 0; j < input[0].length; j++)
    {
      x += input[i][j];
    }
  }
  return x;
}

答案 1 :(得分:3)

var sheet = ss.getSheets();

返回一个工作表数组,这意味着sheets.getRange(输入)将抛出该错误。试试这个:

var sheet = ss.getSheets()[0];

选择工作表数组的第一张工作表。 Google为此提供了一些不错的文档。例如,here's its documentation on getRange()。请注意,它也使用ss.getSheets()[0]。希望这有帮助!

答案 2 :(得分:3)

这是有效的:

CurrentPageChanged