javascript - 获取选定范围内的值和行号,单元格之间有间隙?
问题描述
我需要在 Google 工作表脚本中获取超出选定范围的值和行号。
最初的问题是我试图使用此脚本获取选定范围的值和行号:
sheet = ss.getActiveSheet(),
sheetvalues = sheet.getActiveRange().getValues();
for (i=0; i<sheetvalues.length; i++) {
mr = sheet.getActiveRange().getRow()+i;
}
但我发现如果你使用文件管理器并选择一个范围,那么所有隐藏的单元格也将成为活动范围的一部分,但我只需要那些在过滤范围内的单元格。我决定最好的方法是一个一个地单独选择单元格。我无法获得值和行索引,因为它仅将最后一个选定的单元格计为活动范围。
解决方案
我相信你的目标如下。
- 在工作表的选定行下,您想使用 Google Apps 脚本检索未选定行的行号。
在这种情况下,我认为getSelection
可以使用的方法。并且,为了确认行,getActiveRangeList
使用。当这反映到示例脚本时,它变成如下。
示例脚本:
当您使用这个脚本时,首先,请选择像您的示例图像一样的单元格并运行脚本。
function myFunction() {
// 1. Retrieve the selected ranges.
const selection = SpreadsheetApp.getSelection();
// 2. Retrieve the selected row numbers.
const selectedRows = selection.getActiveRangeList().getRanges().flatMap(r => {
const row = r.getRow();
const temp = [];
for (let i = 0; i < r.getNumRows(); i++) {
temp.push(row + i);
}
return temp;
}).sort((a, b) => a - b);
// 3. From data range, retrieve the row numbers except for the selected row numbers.
const sheet = selection.getActiveSheet();
const range = sheet.getDataRange();
const rowNumbers = [];
for (let r = 1; r <= range.getNumRows(); r++) {
if (!selectedRows.includes(r)) rowNumbers.push(r);
}
console.log(rowNumbers); // Here, you can see the retrieved row numbers at the log.
// 4. Retrieve the row values of the retrieved row numbers.
// If you want to retrieve the row values of "rowNumbers", you can also the following script.
const allValues = range.getValues();
const values = rowNumbers.map(n => allValues[n]);
console.log(values); // Here, you can see the values of row numbers at the log.
}
作为使用所选范围的重点,例如,当依次选择第 3 行、第 1 行、第 2 行的单元格时,范围列表返回单元格的顺序。所以在这个示例脚本中,检索到的行号是排序的。
例如,在运行上面的脚本时,当数据范围为“ A1:C5”时,并且选择单元格“ A1”,“ A3”和“ A5”时
2, 4
。
参考:
推荐阅读
- google-app-engine - google dev_appserver 在升级到 python 3.7 后抛出错误'python2: command not found'
- c# - 上下文中不存在 MVC 项。怎么了?
- javascript - 使用 innerHTML 或 cloneNode 克隆它们时,有没有办法避免重新下载源(图像、音频、图像)?
- javascript - 如何创建类似键值对的新数组?
- c++ - 进程以退出代码 -1073741515 完成 - Mongo DB C++ 驱动程序
- javascript - JS如何设置特殊属性,PHP会忽略什么?
- swift - 允许用户从相机、照片库或相册中选择图像并遇到我无法解决的错误
- apache-flink - Apache Flink 中的数据交换查询
- javascript - 获取 php 页面时返回 CORS 错误的函数
- matplotlib - 在栏的末尾设置值