Google apps script Google工作表中的批量删除过滤器视图

Google apps script Google工作表中的批量删除过滤器视图,google-apps-script,google-sheets,google-sheets-api,google-sheets-filter-view,Google Apps Script,Google Sheets,Google Sheets Api,Google Sheets Filter View,我找到了,但似乎找不到任何有效的方法 问题:我有一个几十人使用的电子表格,随着时间的推移,已经创建了超过200个过滤视图。我想批量删除工作簿中一张工作表中的所有筛选视图 我在启用GoogleSheetsAPI后尝试过这种方法。它会运行,但遗憾的是,所有的过滤器视图仍然存在 function clearFilter() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var ssId = ss.getId(); var s

我找到了,但似乎找不到任何有效的方法

问题:我有一个几十人使用的电子表格,随着时间的推移,已经创建了超过200个过滤视图。我想批量删除工作簿中一张工作表中的所有筛选视图

我在启用GoogleSheetsAPI后尝试过这种方法。它会运行,但遗憾的是,所有的过滤器视图仍然存在

function clearFilter() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var ssId = ss.getId();
    var sheetId = ss.getActiveSheet().getSheetId();
    var requests = [{
        "clearBasicFilter": {
        "sheetId": sheetId
        }
    }];
    Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}
谢谢大家

过滤器视图的图像:

问题:
  • 您正在发出清除筛选器请求,该请求仅清除当前筛选器
解决方案:
  • 您必须发出
    deleteFilterView
    请求
示例代码: 参考资料:

非常感谢您!这非常有效,一次就清除了所有自定义过滤器视图!这将删除工作表中的所有FilterView。如何仅删除未设置名称的筛选器?e、 一些正则表达式,比如
过滤器*
?@Dave是的。您可以在
filterViews
上使用和,而不仅仅是
.map
。如果经过合理努力后仍无法执行,请提出新问题
function delFilterViews() {
  var ssId = SpreadsheetApp.getActive().getId();
  Sheets.Spreadsheets.batchUpdate(
    {
      requests: Sheets.Spreadsheets.get(ssId, {
        ranges: 'Sheet1', //Sheet in which filterviews are present
        fields: 'sheets/filterViews/filterViewId',
      }).sheets[0].filterViews.map(function(e) {
        return { deleteFilterView: { filterId: e['filterViewId'] } }; //create a new delete filter view request for each filter view present in sheet1
      }),
    },
    ssId
  );
}