javascript - Google 脚本:检索过滤器的默认值
问题描述
我想为电子表格中的列创建过滤器,然后检索为过滤器创建的默认条件值列表。我相信我的代码返回一个没有任何值的 Filter 对象。
function TestFilter(){
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, 2, sheet.getMaxRows(), 1).createFilter();
var filter = sheet.getFilter();
var output = filter.getColumnFilterCriteria(2).getCriteriaValues();
return output;
}
解决方案
您可以为此使用以下功能:
getHiddenValues()
返回要隐藏的值。
getVisibleValues()
返回要显示的值。
如果您的过滤器设置为隐藏所有可能的值,您将通过使用函数获得所需的值getHiddenValues()
。
但是,如果您的过滤器仅隐藏您的值的子集,则这是不可能的。对于这种情况,您可以使用如下所示的 Google Apps 脚本函数来获取不同的值:
function getDistinctValues(range) {
var values = range.getValues();
var unique = {};
for (var i=0; i<values.length; i++) {
for (var j=0; j<values[i].length; j++) {
var key = values[i][j];
if (key !== null && key !== undefined && key !== '')
unique[key] = true;
}
}
return Object.keys(unique);
}
如果您试图在 A 列上获取不同的值,它的用法是:
var distinctValues = getDistinctValues(sheet.getRange("A2:A"));
请注意,此函数将值作为字符串返回。如果您想获取实际的数值而不是字符串,您可以使用以下代码简单地解析这些值:
var distinctValues = getDistinctValues(sheet.getRange("A2:A")).map(parseFloat);
推荐阅读
- java - 在相机预览上绘制矩形
- java - 验证方法中的输入
- python - python模块保存在根目录的什么位置?
- sql - 显示客户在 Oracle SQL 中使用的最新手机和倒数第二个手机。图片中附加的要求
- swift - 致命错误:无法比较属于不同集合的索引:
- vue.js - 使用 Vue CLI 时如何更新最新的工作箱版本
- python - 由于 json 数据中不存在的字段,Python 执行 SQL 故障转移
- javascript - 我们可以在 WebStorm 中将自定义 JavaScript 函数参数类型提示为 CSS 选择器吗?
- emacs - SLURM交互节点上的Emacs乱屏
- html - 如何将我的功能移动到页面的顶部中心?