首页 > 解决方案 > 循环浏览具有动态范围的 Google 表格中的所有条目

问题描述

我正在尝试制作一个在 Google Sheet 中通过动态范围工作的过程。表格的长度可以从 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();
    }

标签: google-apps-script

解决方案


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”语句,检查空白行并不慢。你希望在这里完成什么?


推荐阅读