google-apps-script - 循环浏览具有动态范围的 Google 表格中的所有条目
问题描述
我正在尝试制作一个在 Google Sheet 中通过动态范围工作的过程。表格的长度可以从 1 个条目变化到 200 个条目。无论有多少行,我的程序都需要能够使用该表格。
我尝试了两种不同的方法。一个是非常静态的,需要我遍历许多不必要的行来检查它们是否为空。
另一个不能很好地处理所有表格的长度。
有没有其他方法可以解决这个问题。我读过“getDataRanges”。但我不确定这是否适用于我的情况。
有任何想法吗?
- 这种方法是静态的。在这种情况下,它给了我一个 2 行的数组。我考虑过使用它并将其设置为例如(2,200,3,6)。为了处理包含少于 200 行的任何范围。然后查看每一行是否为空。如果它是空的,我什么也做不了,跳过它。
var data = sheet.getRange(2,1,3,6).getValues();
- 这种方法更具动态性。因为它使用 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();
}
解决方案
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”语句,检查空白行并不慢。你希望在这里完成什么?
推荐阅读
- apache-spark - 为现有 Spark 代码向 AWS Glue 添加 JDBC 驱动程序
- python - 插入 USB 设备后,如何自动运行 python 脚本?
- python - selenium 使用的 credentials.txt 格式是什么?
- excel - 每周发送一次自动邮件 VBA
- algorithm - 如何创建高效的基于时间的触发服务?
- python - 查找 IP 地址和 IP 网络集中的 IP
- web-applications - 如何从 Samsung Health 获取心率和计步器等数据到 Tizen 应用程序?
- enums - 有没有办法在使用 Serde 反序列化时允许未知的枚举标签?
- postgresql - PostgreSQL 11.5 对 SELECT EXISTS 查询进行顺序扫描
- javascript - 反应,创建项目问题