我想为电子表格中的列创建过滤器,然后检索为过滤器创建的默认条件值列表。我相信我的代码返回一个没有任何值的 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()
Returns the values to hide.
-
getVisibleValues()
Returns the values to show.
如果您的过滤器设置为隐藏所有可能的值,您将通过使用函数 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);
关于javascript - 谷歌脚本: Retrieving Default Values for Filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59216381/