javascript - 谷歌脚本: Retrieving Default Values for Filter

标签 javascript google-apps-script google-sheets

我想为电子表格中的列创建过滤器,然后检索为过滤器创建的默认条件值列表。我相信我的代码返回一个没有任何值的 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() 获得您想要的值。

但是,如果您的过滤器仅隐藏值的子集,则这是不可能的。对于这种情况,您可以使用如下所示的 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/

相关文章:

javascript - JScript 是否提供三元运算符?

javascript - if 条件 onclick - jQuery

google-apps-script - 如何内联 GAS 库来加速脚本?

json - 将 Google 电子表格转换为 JSON 提要

javascript - 如何使用对话框使 fuelux 数据网格(由主干集合生成)的每一行都可编辑

javascript表格填写不同的方式

javascript - 如何获取 Google 表格中超过 100 个用户名的 Twitter 关注者数量?

google-apps-script - 在脚本中从公共(public)可读的 Google Sheet 获取数据

google-sheets - Countifs 日期介于两个日期之间 Google 表格

Python google sheets,for循环在一个循环后退出