当前位置: 首页 > 知识库问答 >
问题:

删除所有文件标准,但保留过滤器

贺景铄
2023-03-14

我想清除所有筛选规则,但保留筛选本身。

有没有直接快速的方法去做呢?

我找到的代码是:

var filter = sheet.getFilter(); 

它获取筛选器对象,我对筛选器#的选项数量是有限的。

注意:过滤器。remove()删除此筛选器,但我需要保留它。

共有3个答案

尉迟国发
2023-03-14

麦克斯的回答很好。然而,一个没有API的更快的选项是这样的——简单地删除过滤器,然后不加任何条件地添加回来:

  var sheet = SpreadsheetApp.getActiveSheet();
  var currentFilter = sheet.getFilter();
  var filterRange = currentFilter.getRange();
  currentFilter.remove();

  // add filter back
  filterRange.createFilter();
卫才
2023-03-14

您希望仅删除基本筛选器的条件,而不删除基本筛选器。如果我的理解是正确的,那么使用工作表API怎么样?示例脚本如下。使用此脚本时,请在高级谷歌服务和应用编程接口控制台启用工作表应用编程接口。

  • 关于脚本编辑器
  • 关于脚本编辑器

如果现在打开带有使用工作表API的脚本的脚本编辑器,则可以通过访问此URL为项目启用工作表APIhttps://console.cloud.google.com/apis/library/sheets.googleapis.com/

var id = SpreadsheetApp.getActiveSpreadsheet().getId();
var filters = Sheets.Spreadsheets.get(id, {fields: "sheets/basicFilter"});
var resource = {requests: filters.sheets.filter(function(e){return Object.keys(e).length}).map(function(e){return {setBasicFilter: {filter: {range: e.basicFilter.range}}}})};
Sheets.Spreadsheets.batchUpdate(resource, id);
  • 此示例通过不提供条件的参数仅删除条件,而不删除基本筛选器
  • 在此示例中,将删除电子表格中所有图纸的条件。因此,如果要删除特定工作表的条件,请修改此示例
  • 高级谷歌服务:https://developers.google.com/apps-script/guides/services/advanced
  • 表API v4:https://developers.google.com/sheets/api/

如果这不是你想要的,我很抱歉。

楚瑞
2023-03-14

我尝试过以下代码

function deleteFilterCriterias(sheet)
{

 var filter = sheet.getFilter(); 
  if (!(filter)) { return -1; }
  
  var rangeF = filter.getRange();
  var cols = rangeF.getWidth();
  var col = rangeF.getColumn();
  
  for (var i = col; i <= cols; i++)
  {  
    // remove filter criteria for each column
    filter.removeColumnFilterCriteria(i)    
  }  
  return 0;  
}

但我觉得它很笨重。

在@Tanaike给出答案后,我尝试了Sheets API。

我在一张纸上重置过滤器的代码是:

function deleteFilterCriterias2(sheet)
{
  
  var ssId = sheet.getParent().getId();
  
  var range = sheet.getFilter().getRange();  

  var rowStart = range.getRow() - 1;
  var colStart = range.getColumn() - 1;
  
  // settings to reset filter
  var filterSettings = {
    "range": {
      "sheetId": sheet.getSheetId(),
      "startRowIndex": rowStart,
      "endRowIndex": range.getHeight() + rowStart,
      "startColumnIndex": colStart + colStart,
      "endColumnIndex": range.getWidth()
    }
  }; 

  var requests = [{
    "setBasicFilter": {
      "filter": filterSettings
    }
  }];
  
  // api request
  Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
    
}

这个要快得多。

工具书类

  • 无API
 类似资料:
  • 我正在尝试使用 Jsoup 删除 HTML 页面标记之间的所有文本 例如,如果输入HTML是 输出应该是 基本上,我想删除返回的内容。 我找到了很多相反的帖子,只保留文本,但没有解决我的问题。知道怎么做吗? 编辑 maverick9999:https://stackoverflow.com/a/24292349/3589481提出的解决方案将解决大部分情况。 然而,正如评论中提到的,这个解决方案也

  • 问题内容: 我正在尝试使用Jsoup删除HTML页面的标签之间的所有文本 例如,如果输入的HTML是 输出应为 基本上,我想删除由返回的内容 我发现有很多帖子是相反的,只保留文本,而没有什么可以解决我的问题。有关如何执行此操作的任何想法? 编辑 maverick9999提出的解决方案将解决大多数情况。 但是,正如注释中所注意到的,此解决方案还将删除嵌套标签。 举个例子: 将在输出中删除一个div:

  • 问题内容: 问题是这样的:我有一个像这样的XML片段: 为了得到结果,我想删除所有-和-Tags,但保留它们的(文本)内容和子节点不变。另外,-Element应该保持不变。结果应该这样 目前,我将回到一个非常肮脏的把戏:我将etree.tostring这个片段,通过正则表达式删除有问题的标签,并用etree.fromstring结果替换原始片段(不是真正的代码,但是应该这样): 我知道我可能可以使

  • 假设我有一个像这样的html片段: 我想从中得到的是: 所以我的问题是:如何从html中去掉所有包装标签,只得到与html中相同顺序的文本?正如您在标题中看到的,我想使用jsoup进行解析。 重音html示例(请注意“á”字符): 我想要的是: 这个html不是静态的,一般来说,我只是想解码人类可读形式的通用html片段的每一个文本,宽度线中断。

  • 我有一个整数和零的列表。我想只过滤掉Nones。 这将删除None,但也删除0(整数)。我想以保持0(整数)的方式修改它 结果是一个列表[1,0,1,0,1,0,1,0]--

  • 问题内容: 对于不同的屏幕尺寸,我需要div内的元素位于其div之外。 我目前有重复的html,并将其隐藏在某些视口中,这显然不是理想的选择,但是我不确定是否还有另一种方法。 这是html台式机和平板电脑 这是手机所需的html 这样我就可以对容器div中的所有项目使用flexbox命令 问题答案: 这是的完美用例 导致元素的子元素看起来像是元素父元素的直接子元素,而忽略了元素本身。当使用CSS网