5

请注意:我不是很精通编码和谷歌脚本的新手。

我正在尝试测试脚本中的背景颜色。具体来说,我将一个名称数组存储到一个命名范围中,并想计算有多少单元格设置为绿色。
到目前为止,我有以下但收到错误:TypeError:无法将未定义的属性“0.0”设置为“#00ff00”

function testCount(range) {

  var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange");
  var names = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange").getValues();

  var NumColumns = ranges.getNumColumns();
  var NumRows = ranges.getNumRows();
  var c = 0;

  for (var i = 0; i<NumColumns; i++){
    for (var j = 0; j<NumRows; j++){
      if (ranges.getBackgrounds()[i][j] ="#00ff00"){ 
        c++;
      }else{
        c=c;
      }
    }
  }
  return c;

当我尝试以下颜色的单元格时,我抓住了绿色的值

return ranges.getBackgrounds()[0][1];
4

1 回答 1

7

看起来您的代码需要稍微清理一下。我将解释编辑。

function testCount() {

  var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange");

不需要这var names条线,因为您似乎不使用它。

  var NumColumns = ranges.getNumColumns();
  var NumRows = ranges.getNumRows();

一次抓取所有单元格的背景并将其存储在变量中。

  var backgrounds = ranges.getBackgrounds();
  var c = 0;

  for (var i = 0; i<NumColumns; i++){
    for (var j = 0; j<NumRows; j++){

引用backgrounds我们在上面创建的变量。另外,第一个数字是行号,第二个数字是列号。所以你会想要交换你原来的东西ij此外,a = 10 值 10 分配给变量 a。要检查是否相等,请使用==. 这将检查两个值是否相同。

      if (backgrounds[j][i] == "#00ff00"){ 
        c++;
      }

不需要有一个else不做任何事情的声明。你可以把这else部分放在外面。

    }
  }
  return c;
}
于 2013-03-03T01:07:40.930 回答