在谷歌脚本中测试背景颜色

Jon*_*Jon 5 google-apps-script

请注意:我不太熟悉编码,并且对谷歌脚本来说是全新的。

我正在尝试测试脚本中的背景颜色。具体来说,我将把一个名称数组存储到命名范围中,并想要计算有多少个单元格设置为绿色。
到目前为止,我有以下内容,但收到错误: TypeError: Cannot set property "0.0" of undefined to "#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;
Run Code Online (Sandbox Code Playgroud)

当我对彩色单元格尝试以下操作时,我获取了绿色的值

return ranges.getBackgrounds()[0][1];
Run Code Online (Sandbox Code Playgroud)

Phi*_*zak 7

看起来你的代码需要一些清理。我将解释编辑内容。

function testCount() {

  var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange");
Run Code Online (Sandbox Code Playgroud)

不需要这var names条线,因为看起来你不使用它。

  var NumColumns = ranges.getNumColumns();
  var NumRows = ranges.getNumRows();
Run Code Online (Sandbox Code Playgroud)

立即获取所有单元格的背景并将其存储在变量中。

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

  for (var i = 0; i<NumColumns; i++){
    for (var j = 0; j<NumRows; j++){
Run Code Online (Sandbox Code Playgroud)

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

      if (backgrounds[j][i] == "#00ff00"){ 
        c++;
      }
Run Code Online (Sandbox Code Playgroud)

不需要有一个else不做任何事情的声明。您可以省略该else部分。

    }
  }
  return c;
}
Run Code Online (Sandbox Code Playgroud)