Reputation: 63
I have 50 rows in google spreadsheet. User use these rows as input. But not all 50 rows are shown. When user input number in A2 cell then only that number of the rows are visible. I was able to do the task. But there is one problem inside for loop.
I think problem is in this line
for(var i = 2; i < fillingRows; i++){
//This is my full code.
function onEdit(e) {
//Logger.log("Previous value was - " + e.oldValue);
//Logger.log("New value is - " + e.value);
var range = e.range;
var rowNumber = range.getRow();
var columnNumber = range.getColumn();
//Logger.log("Row - " + rowNumber);
//Logger.log("Column - " + columnNumber);
if (rowNumber == 2 && columnNumber == 1){
//Logger.log(e.value);
var fillingRows = e.value + 2;
//Hide rows from 3 to 51
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('3:51').activate();
spreadsheet.getActiveSheet().hideRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
Logger.log(fillingRows);
for(var i = 2; i < fillingRows; i++){
spreadsheet.getActiveSheet().showRows(i, 1);
}
}
}
When I change that line to something like this
for(var i = 2; i < 10; i++){
Then it works correctly. But I can't use constant number here. Isn't it possible to use variable inside a for loop.
Upvotes: 0
Views: 183
Reputation: 64062
Try this:
function onEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!="Your sheet name")return;//Edit this. Add your sheet name
if(e.range.rowStart==2 && e.range.columnStart==1 && e.value>=1 && e.value<=50){
//e.source.toast('Value: ' + e.value);
sh.hideRows(3,50);
sh.showRows(3,e.value);
//sh.getRange(1,1).setValue(e.value);
}
}
Upvotes: 1
Reputation: 131
It's probably because fillingRows
is no greater than 2, and therefore,
I suggest printing & checking fillingRows
.
Upvotes: 1