使用 Google Apps 脚本对范围启用数据过滤器
Posted
技术标签:
【中文标题】使用 Google Apps 脚本对范围启用数据过滤器【英文标题】:Enable data filters on a range with Google Apps Script 【发布时间】:2013-08-29 17:11:46 【问题描述】:有没有办法通过 Google 表格中的脚本为特定范围启用数据过滤器?目前这可以手动完成,但我不想选择一个范围,然后点击“数据”,然后打开过滤器。
我知道过滤器将保留在现有工作表中。但是,我尝试为通过脚本生成的新电子表格应用过滤器。
我的想法是:
function foo()
var spreadsheet = SpreadsheetApp.getActive();
var infoSheet = spreadsheet.insertSheet('sheetName', spreadsheet.getNumSheets());
infoSheet.getRange(1, 1, 5, 5). -> enable filter?
...
如何以编程方式实现我的目标?
【问题讨论】:
【参考方案1】:Filter
s 现在也可以在原生电子表格服务中使用,无需通过“高级服务”激活表格 REST API。
上述 Sheets REST API 方法,适用于原生 Apps Script:
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());
进一步阅读:
Filter Reference FilterCriteria Reference【讨论】:
应用后,我们如何将过滤后的数据返回到应用脚本中。当我做filter.getRange().getValues()
时,我得到所有数据,而不是过滤的数据
@daydreamer 请查看这篇文章tanaikech.github.io/2019/11/08/…您可以使用应用过滤器isRowHiddenByFilter
查看是否隐藏了特定行【参考方案2】:
现在您可以使用谷歌表格高级服务应用过滤器。 首先,您需要打开 Google Sheets API。为此,请按照以下链接中提到的步骤操作:
https://developers.google.com/sheets/api/quickstart/apps-script
之后,您可以使用以下功能来应用过滤器。
function applyFilter()
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var dataSheet = ss.getActiveSheet();
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings =
"range":
"sheetId": sheetId,
"startRowIndex": 0,
"endRowIndex": lastRow,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
;
var requests = [
"setBasicFilter":
"filter": filterSettings
];
Sheets.Spreadsheets.batchUpdate('requests': requests, ssId);
【讨论】:
【参考方案3】:简短的回答是“否”。 至少根据this open issue,GAS 似乎既不支持获取也不支持设置列的过滤条件。
另一种解决方案是在 GAS 端进行过滤和排序,并将不同的结果推送到不同的列或工作表中。
【讨论】:
更新的答案如下。继续滚动。以上是关于使用 Google Apps 脚本对范围启用数据过滤器的主要内容,如果未能解决你的问题,请参考以下文章
我是否需要更改我的Apps脚本代码,因为Google+登录功能已被弃用?
在 Google Apps 脚本中使用 BigQuery 连接到 Google 电子表格