【问题标题】:How to use variable inside for loop如何在for循环中使用变量
【发布时间】:2019-08-30 20:51:35
【问题描述】:

我在谷歌电子表格中有 50 行。用户使用这些行作为输入。但并未显示所有 50 行。当用户在 A2 单元格中输入数字时,只有该行数可见。我能够完成任务。但是for循环内部有一个问题。

我认为问题出在这一行

for(var i = 2;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);
       }
     }

   }

当我把那条线改成这样的时候

for(var i = 2; i

然后它可以正常工作。但我不能在这里使用常数。 是不是可以在for循环中使用变量。

【问题讨论】:

标签: javascript for-loop google-apps-script google-sheets google-sheets-macros


【解决方案1】:

试试这个:

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);
  }
}

【讨论】:

  • 非常感谢。我能够使用您的答案中使用的一些技术来解决它。
【解决方案2】:

可能是因为fillingRows不大于2,因此,

我建议打印和检查fillingRows

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2018-08-24
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多