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

时间:2013-03-03 00:34:19

标签: google-apps-script

请注意:我不是很精通编码和全新的google脚本。

我正在尝试测试脚本中的背景颜色。具体来说,我将在命名区域中存储一系列名称,并希望计算有多少单元格设置为绿色 到目前为止,我有以下但收到错误: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];

1 个答案:

答案 0 :(得分:1)

看起来您的代码需要一点清洁。我将解释编辑。

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;
}