使用Google Apps脚本在范围内启用数据过滤器

Lun*_*ang 4 filter google-sheets google-apps-script

有没有办法在Google Sheet中按脚本启用某个范围的数据过滤器?目前这可以手动完成,但我不想选择范围,然后单击"数据",然后启用过滤器.

我知道过滤器将保留在现有的工作表中.但是,我尝试对通过脚本生成的新电子表格应用过滤器.

我的想法是:

function foo() {
  var spreadsheet = SpreadsheetApp.getActive();
  var infoSheet = spreadsheet.insertSheet('sheetName', spreadsheet.getNumSheets());

  infoSheet.getRange(1, 1, 5, 5). -> enable filter?
  ...
}
Run Code Online (Sandbox Code Playgroud)

如何以编程方式实现目标?

teh*_*wch 7

Filters现在也可以在本机电子表格服务中使用,而无需通过"高级服务"激活表格REST API.

上面的Sheets REST API方法,适用于原生Apps脚本:

function applyFilter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getActiveSheet();

  var toFilter = dataSheet.getDataRange();
  var filter = toFilter.createFilter();

  // Make some criteria to filter with.
  var fcb = SpreadsheetApp.newFilterCriteria();
  /* use FilterCriteria methods */
  fcb.whenCellNotEmpty();

  // Filter the range based on the 1st column:
  filter.setColumnFilterCriteria(1, fcb.build());
}
Run Code Online (Sandbox Code Playgroud)

进一步阅读:


小智 1

简短的回答是“否”。看来 GAS 既不支持获取也不支持设置列的过滤条件,至少根据这个开放问题

另一种解决方案是在 GAS 端进行过滤和排序,并将不同的结果推送到不同的列或表中。

  • 更新的答案如下。继续向下滑。 (4认同)