google-apps-script - 如何从过滤器中自动选择范围而无需手动输入?
问题描述
我想知道是否有一种方法可以根据选定的过滤器自动选择单元格范围。
- 在(H 列)中设置过滤器
- 自动选择从A列(A2000)开始的结果单元格数据:C列(C5000)等。---这就是我卡住的地方。我不知道如何编写以根据所选过滤器自动选择结果单元格数据。
目前,我的锻炼是手动输入单元格,以便继续编写代码。我希望我在上面说得通。
- - 代码 - -
function ColHtoActive() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('Current');
var crange = sheet.getRange('A7:I7350').activate();
var currentCell = sheet.setCurrentCell(sheet.getRange('H7');
var hSfilter = sheet.getRange('A7:I7350').createFilter();
var ccC1 = sheet.getRange('H7').activate();
var cCriteria = SpreadsheetApp.newFilterCriteria().setHiddenValues('Inactive']).build();
sheet.getFilter().setColumnFilterCriteria(8, cCriteria);
}
function copycolA() {
var ss = SpreadsheetApp.getActive().getSheetByName('A');
ss.getRange('A2307').activate();
ss.getRange('A2307:A7155').copyTo(
ss.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL,
false);
}
解决方案
您可以从中获取过滤后的范围维度getFilter().getRange()
。这将复制所有过滤后的范围:
function copycolA() {
var sourceSheet = SpreadsheetApp.getActive().getSheetByName('Current');
var targetSheet = SpreadsheetApp.getActive().getSheetByName('A');
var sourceRange = sourceSheet.getFilter().getRange();
sourceRange.copyTo(
targetSheet.getRange('A1'),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL,
false);
}