使用可变变量来定义循环中的范围。

huangapple go评论73阅读模式
英文:

Use changing variable to define range in loop

问题

I would like to extract multiple ranges within a range on a spreadsheet. The number of rows always changing. This is what I'm aiming to do. The start row and the number of rows will always be different.

var sourcesheet = ss.getSheetByName("sheet name");
var nameRowN = starting rows already in an array
var sor = number of rows in each array already calculated and put in an array

var ranges = [];
for (var m = 0; m < sourcesheet.length; m++) {
   ranges = sourcesheet.getRange(nameRowN[m],5,sor[m],29).getValues();
}

So ranges should include multiple mini arrays. The for loop goes through m, then m+1 and so on.
Am I on the right track? Is that possible to achieve what I'm looking for this way?

Edit: I can get the range outside of the loop and replace m variable:

ranges = sourcesheet.getRange(nameRowN[1],5,sor[1],29).getValues();
英文:

I would like to extract multiple ranges within a range on a spreadsheet. The number of rows always changing. This is what I'm aiming to do. The start row and the number of rows will always be different.

var sourcesheet = ss.getSheetByName(&quot;sheet name&quot;);
var nameRowN = starting rows already in an array
var sor = number of rows in each array already calculated and put in an array

 var ranges = [];
   for (var m = 0; m &lt; sourcesheet.length; m++) {
   ranges = sourcesheet.getRange(nameRowN[m],5,sor[m],29).getValues();
   }

So ranges should include multiple mini arrays. The for loop goes through m, then m+1 and so on.
Am I on the right track? Is that possible to achieve what I'm looking for this way?

Edit: I can get the range outside of the loop and replace m variable:

ranges = sourcesheet.getRange(nameRowN[1],5,sor[1],29).getValues();

答案1

得分: 1

如果您的目标是迭代所有包含内容的行 - 您可以使用方法getLastRow()

示例:

var lastRow = sourcesheet.getLastRow();
for (var m = 0; m < lastRow; m++) {
  // 执行您想要的操作
}

另一种可能性是与getValues()length一起使用getDataRange()

示例:

var rangeLength = spreadsheet.getDataRange().getValues().length;
for (var m = 0; m < rangeLength; m++) {
  // 执行您想要的操作
}
英文:

If your goal is to iterate through all rows with contents - you can use the method getLastRow().

Sample:

var lastRow=sourcesheet.getLastRow();
for (var m = 0; m &lt; lastRow; m++) {
  //do what you want
}

Another possibility would be to use getDataRange() in conjunction with getValues() and length.

Sample:

var rangeLength=spreadsheet.getDataRange().getValues().length;
for (var m = 0; m &lt; rangeLength; m++) {
  //do what you want
}

huangapple
  • 本文由 发表于 2020年1月6日 22:34:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/59613909.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定