0

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.

1
  • But there is one problem What is the problem? Is there a error? Does it not do what it's supposed to do? See minimal reproducible example and edit your question. Commented Aug 30, 2019 at 21:05

2 Answers 2

1

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);
  }
}
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you very much. I was able to solve it using some techniques used in your answer.
1

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

I suggest printing & checking fillingRows.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.