Lon*_*by 6 google-sheets google-apps-script
我需要获取电子表格的范围值 - 但只有那些通过当前选择的过滤器显示的行。
我尝试过getValues()使用sheet.getFilter().getRange():
function applyOverdueFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var filter1 = SpreadsheetApp.newFilterCriteria();
filter1.whenDateBefore(SpreadsheetApp.RelativeDate.TODAY);
sheet.getFilter().setColumnFilterCriteria(4, filter1.build());
var newData = sheet.getFilter().getRange().getValues(); // this doesn't work
Logger.log(newData);
}
Run Code Online (Sandbox Code Playgroud)
但是,newData包含电子表格中的所有数据,而不仅仅是应用过滤器后显示的数据。如何只获取过滤后的数据?
注意:该工作表已经有一个过滤器,直到最后两行为止的所有内容都可以完美运行。我不想在 JavaScript 中使用数组过滤的原因是因为我的过滤器涉及日期和相对日期,使用 Apps 脚本的过滤条件更容易过滤这些日期。
您可以获取电子表格中的所有数据,然后应用一个过滤器,在该范围内迭代查找您的条件。在这种情况下,电子表格调用 ss 作为变量,然后我声明一个 var 调用 newData,这将是每个 item[column] == criteria 的结果,其中 columns 是列的编号,例如列 B 是 1,A 是 0 .以及您应该了解的标准。
例如返回 item[0] == 'CLOSED'。
function applyOverdueFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getDataRange().getDisplayValues();
var newData= ss.filter(function(item){
return item[column] == criteria;
});
Logger.log(newData);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12025 次 |
| 最近记录: |