Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌应用程序脚本/电子表格-如何获取筛选条件?_Google Apps Script - Fatal编程技术网

Google apps script 谷歌应用程序脚本/电子表格-如何获取筛选条件?

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

是否可以获取我的数据集的筛选条件。例如,如果我的一列是“Department”,并且我过滤了数据以仅显示“IT”。我们如何获得过滤标准“IT”。我需要把过滤后的标准输入到我的气体中去做一些其他的操作


谢谢。

谷歌电子表格已经有了一个过滤公式()。例如,如果您的数据如下所示

  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中激活它即可