coderH
coderH

Reputation: 63

How to use variable inside for loop

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

Answers (2)

Cooper
Cooper

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

BakSa
BakSa

Reputation: 131

It's probably because fillingRows is no greater than 2, and therefore,

I suggest printing & checking fillingRows.

Upvotes: 1

Related Questions