【发布时间】:2018-07-18 01:31:35
【问题描述】:
有没有办法从范围中获取子范围?
即。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var fullRange = ss.getRange("A:P");
我可以从fullRange 获得一个范围吗?
上下文是我正在使用数据验证来根据范围动态设置数据验证下拉列表。
示例:我有两个单元格 - 第一个是包含类别列表的下拉列表,第二个是包含取决于第一个单元格中选择的类别的子类别列表的下拉列表。
我实现这一点的方式是基于类别选择,我使用基于该类别选择的子类别列表填充隐藏行。然后我使用requireValueInRange 为该子类别单元格设置数据验证。
它运行良好,除了运行速度非常慢,我正在尝试找出一种方法让它更快。我猜它慢的原因之一是因为我在循环中使用getRange 来获得正确的requireValueInRange。所以我试图拉一个子范围,而不是每次都重新查询范围。
function setDataValidations() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var categoryRange = ss.getRange("A:A");
var subCatCells = ss.getRange("B:B");
var subCatRules = subCatCells.getDataValidations();
var rangeLength = categoryRange.getValues().length;
for (var i = 1; i < rangeLength; i++ ){
var catCell = categoryRange.getCell(i, 1);
var subCatOptions = ss.getRange("'subcats'!A" + i + ":P" + i);
var subCatRule = SpreadsheetApp.newDataValidation().requireValueInRange(subCatOptions, true).build();
}
catCells.setDataValidations(subCatRules);
}
【问题讨论】:
标签: google-apps-script google-sheets