Google apps script 谷歌应用程序脚本/电子表格-如何获取筛选条件?
是否可以获取我的数据集的筛选条件。例如,如果我的一列是“Department”,并且我过滤了数据以仅显示“IT”。我们如何获得过滤标准“IT”。我需要把过滤后的标准输入到我的气体中去做一些其他的操作Google apps script 谷歌应用程序脚本/电子表格-如何获取筛选条件?,google-apps-script,Google Apps Script,是否可以获取我的数据集的筛选条件。例如,如果我的一列是“Department”,并且我过滤了数据以仅显示“IT”。我们如何获得过滤标准“IT”。我需要把过滤后的标准输入到我的气体中去做一些其他的操作 谢谢。谷歌电子表格已经有了一个过滤公式()。例如,如果您的数据如下所示 A 1 Department 2 IT Department (Edinburgh) 3 Department of IT 4 Other Department 要获得筛选列表,可以使用以下公式 =FILTER(A:A;F
谢谢。谷歌电子表格已经有了一个过滤公式()。例如,如果您的数据如下所示
A
1 Department
2 IT Department (Edinburgh)
3 Department of IT
4 Other Department
要获得筛选列表,可以使用以下公式
=FILTER(A:A;FIND("IT",A:A)>0)
()
如果你想完全在应用程序中完成一些事情,罗曼·维亚拉德(Romain Vialard)已经编写了一个带有过滤功能的脚本。下面是一个简单的过滤器示例。它将从第一列过滤信息(将XXX更改为有意义的内容):
function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var filterMenuEntries = [{name: "filter Column1", functionName: "filter"}];
ss.addMenu("choose filter", filterMenuEntries);
}
function filter(){
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
for (var i=1; i <=numRows -1; i++){
var row =values[i];
// Column value
var myValue = row[0];
// filter value
if (myValue == "XXX"){
sheet.hideRows(i+1);
}
}
}
函数onOpen(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var filterMenuEntries=[{name:“filter Column1”,functionName:“filter”}];
添加菜单(“选择过滤器”,过滤器菜单项);
}
函数过滤器(){
var sheet=SpreadsheetApp.getActiveSheet();
var rows=sheet.getDataRange();
var numRows=rows.getNumRows();
var values=rows.getValues();
对于(var i=1;i为了寻找这个问题的答案,我提出了下一个解决方法:
- 在表中应用过滤器
- 为过滤后的(因此 可见)单元格(在F列的示例代码中为红色)
- 运行脚本:
- 读取阵列颜色中的(F列的)背景色
- 迭代此数组
- 构建新的可见行号数组
function getFilterdData(){
var s = SpreadsheetApp.getActive();
var sheet= s.getSheetByName('Opdrachten en aanvragen');//any sheet
var rows = new Array();
var colors = sheet.getRange(1, 6, sheet.getLastRow(), 1).getBackgrounds();
for(var i = 0; i < colors.length; i++){
if(colors[i] == "#ff0000"){
var rowsIndex = rows.length;
rows[rowsIndex] = i+1;
sheet.getRange(i+1, 6).setBackground("#d9ead3")
}
}
}
函数getFilterData(){
var s=SpreadsheetApp.getActive();
var sheet=s.getSheetByName('Opdrachten-aanvragen');//任何工作表
var rows=新数组();
var colors=sheet.getRange(1,6,sheet.getLastRow(),1.getBackgrounds();
对于(变量i=0;i
随着最近推出的“高级工作表”服务,现在可以使用以下过滤器:
这里有一个链接到
下面是一个如何操作的小片段:
function setSheetBasicFilter(ssId, BasicFilterSettings) {
//requests is an array of batchrequests, here we only use setBasicFilter
var requests = [
{
"setBasicFilter": {
"filter": BasicFilterSettings
}
}
];
Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}
根据mhawksey的回答,我编写了以下函数:
//
函数celdasOcultas(ssId,rangeA1){
//限制从API返回的内容
var fields=“表(数据(行元数据(hiddenByFilter)),属性/sheetId)”;
var sheets=sheets.Spreadsheets.get(ssId,{ranges:rangeA1,fields:fields}).sheets;
若有(张){
返回工作表[0]。数据[0]。行元数据;
}
}
这是在谷歌的问题追踪器as中提出的
截至,他们发布了一个解决方案:
昨天,我们发布了一些新功能,可以
使用应用程序脚本操作筛选器:
通过该类,您可以依次获得每一列的结果。可能我对我的问题中要做的事情还不够清楚。请允许我进一步解释。我有一个电子表格,其中包含列->部门|单位|员工姓名|工资。用户可以按部门和单位筛选电子表格。我还有一个名为“流程”的自定义菜单。如果用户单击“进程”,它将运行自定义脚本函数,根据用户筛选的条件进行一些处理。是否可以在脚本中获得用户筛选的条件?据我所知,无法获得用户应用的筛选器可能还有其他方法,但这取决于此问题的答案。当用户按部门和单位是单个选项还是用户选择多个部门/单位?您可以查看此解决方案:工作表仅适用于API(https调用)-他要的是应用程序脚本-它们是两个不同但相似的东西。@amok:Sheets API在应用程序脚本中可用,您只需在resources=>Advanced Google services=>Google Sheets API中激活它即可