谷歌脚本,忽略for循环 - 电子表格

时间:2014-02-20 03:21:15

标签: for-loop google-apps-script runtime-error

我一直在寻找脚本和东西来查找但是,似乎google api已经被改变了太多,或者我很笨,并且不知道如何执行旧脚本并使它们工作。

我不断收到这些错误解析错误... Yahoew这对很多有帮助。不知道是哪一行。所以我自己做了。

function amountOfColors(color, range){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var orgColor = ss.getRange(color).getBackground();
var range = ss.getRange(range);

var x = 0;
Logger.log("I was here before the loop.");
for (var i; i < range.getNumRows(); i++) {
Logger.log("Entered Row loop");
for (var j; j < range.getNumColumns(); j++) {
  Logger.log("Entered Columns loop");
  var curCell = range.getCell(i, j);
  Logger.log("curCell is : " & curCell);
  if(curCell.getBackground() == orgColor) {
    Logger.log("curCell color is : " & curCell.getBackground());
    x++;
  }
}
}
Logger.log("END");
return x;
};

正如你所看到的,我几乎把它记录下来。但是这是它在日志文件中返回的内容:

[14-02-20 04:00:53:445 CET] I was here before the loop.
[14-02-20 04:00:53:445 CET] END

甚至没有触摸我的循环?

我希望这个脚本的所有内容是从原始位置获取颜色,然后找到有多少个单元格具有该颜色并将其返回。非常简单的脚本。

希望有人可以在这一点上启发我。我试图从脚本库中安装类似的脚本,但它们也会返回错误。

以下是设置图片:

http://b.imgdrp.com/PCoT.PNG - 我意识到它说B33:B35,但即使使用A它也不起作用。

1 个答案:

答案 0 :(得分:0)

添加我自己的答案以防有人遇到类似的问题。

function amountOfColors(color, range){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0]
  var orgColor = sheet.getRange(color).getBackground();
  var range = sheet.getRange(range);

  var x = 0;

  for (var i = 1; i <= range.getNumRows(); i++) {
    for (var j = 1; j <= range.getNumColumns(); j++) {
      var curCellColor = range.getCell(i,j).getBackground();
      if(curCellColor == orgColor)
        x++;
    }
  }
  return x;
};

除此之外,我改变了调用函数的方式:

而不是:

=amountOfColors("A35", "A33:A35")

你需要使用:

=amountOfColors("A35"; "A33:A35")

你可以看到分号而不是逗号。

我很抱歉发布和修复它,似乎我所需要的只是额外一小时才能变得狡猾。至少希望有人可以从中获得一些东西。 如果对代码有任何疑问可以随意添加评论,我会尝试解释。 最诚挚的问候Qvintus。