循环浏览具有动态范围的Google表格中的所有条目

时间:2019-04-10 08:27:58

标签: google-apps-script

我正在尝试进行一个正在Google表格中动态范围内工作的过程。 表的长度可以从1个条目到200个不等。 无论有多少行,我的程序都必须能够使用该表。

我尝试了两种不同的方法。其中一个非常静态,需要我遍历许多不必要的行以检查它们是否为空。

另一个不能很好地处理所有表长度。

我可以使用其他任何方法来解决此问题。我已经阅读了有关“ getDataRanges”的信息。但是我不确定这是否可以解决我的问题。

有什么想法吗?

  1. 这种方法是静态的。在这种情况下,它给了我2行的数组。我已经考虑过使用它并将其设置为例如(2,200,3,6)。为了处理少于200行的任何范围。然后查看每一行以查看是否为空。如果为空,我什么也做不了,就跳过它。
var data = sheet.getRange(2,1,3,6).getValues();
  1. 这种方法更具动态性。因为它使用Ctrl + Shift +右键+向下键来创建表中所有现有数据的范围。但是,例如,如果只有1行,则效果不佳。因为向下选择时会选择很多行。
spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.NEXT).activate();
  spreadsheet.getRange('A2:V2').activate();
  var currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
  currentCell.activateAsCurrentCell();

  var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
  var activeRange = selection.getActiveRange();

  var range = '';
  var sel = SpreadsheetApp.getActive().getSelection().getActiveRangeList().getRanges();
  for(var i = 0; i < sel.length; i++){ 
  range += sel[i].getA1Notation();
    }

1 个答案:

答案 0 :(得分:0)

var data = sheet.getDataRange().getValues();
  for(var i = 0; i < data.length; i++){ 
  if (data[i][0] = "") continue; //blank row
  range += data[i].getA1Notation();
}

对于您来说确实会很好地工作。

也就是说,只要在数组中而不是使用单独的“ getValue”语句来执行操作,检查空白行的速度就不会慢。您希望在这里完成什么?