Just a note: I am not very versed in coding and brand new to google script.
I am trying test for background color within a script. Specifically, I will have an array of names stored into a named range and want to count how many cells are set to green.
So far I have the following but receive an error: 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;
I grabbed the value for green when I tried the following for a cell that was colored
return ranges.getBackgrounds()[0][1];
Just looks like your code needs a little cleaning. I'll explain the edits.
function testCount() {
var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange");
No need to have the var names
line because it seems that you don't use it.
var NumColumns = ranges.getNumColumns();
var NumRows = ranges.getNumRows();
Grab the backgrounds of all the cells at once and store that in a variable.
var backgrounds = ranges.getBackgrounds();
var c = 0;
for (var i = 0; i<NumColumns; i++){
for (var j = 0; j<NumRows; j++){
Reference the backgrounds
variable that we created above. Also, the first number is the row number, and the second number is the column number. So you'll want to swap i
and j
from what you had originally. Also, a = 10
assigns the value of 10 to the variable a. To check for equality, you use ==
. This checks if the two values are the same.
if (backgrounds[j][i] == "#00ff00"){
c++;
}
No need to have an else
statement that doesn't do anything. You can leave the else
part out.
}
}
return c;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With