请注意:我不是很精通编码和全新的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];
答案 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
变量。此外,第一个数字是行号,第二个数字是列号。因此,您需要从原来的内容中交换i
和j
。此外,a = 10
将值<10>赋值给变量a。要检查是否相等,请使用==
。这将检查两个值是否相同。
if (backgrounds[j][i] == "#00ff00"){
c++;
}
不需要else
语句不执行任何操作。您可以将else
部分退出。
}
}
return c;
}