google-apps-script - 使用 Google App 脚本删除一定数量的过滤器 View

标签 google-apps-script google-sheets google-sheets-api google-apps

我对找到一种使用 Google APP 脚本删除给定数量的过滤器 View 的方法非常感兴趣。目前,我有几张工作表,其中有数十个未命名的过滤器 View ,我需要删除它们。我可以手工完成,但这需要几个小时。

经过一些研究,我发现一个代码片段允许删除给定工作表中的所有过滤器 View ,但我想删除一些过滤器 View ,而不是全部。

这是我已经找到的代码片段,由 TheMaster 提供:

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
  );
}

我希望脚本工作的方式是删除当前工作表的所有过滤器 View ,其名称以“Filter X”开头,X 可以是从 1 到 100 的数字

我对正则表达式的蹩脚尝试会是这样的

(过滤器)\s\d*

我目前的编程技能不允许我走得更远。

其他人可以帮我解决这个问题吗?

非常感谢,

最佳答案

  • 您想要删除事件工作表上的所有过滤器 View 。
  • 您想要删除过滤 View 标题前缀为 Filter 的所有过滤 View 。

如果我的理解是正确的,那么下面的示例脚本怎么样?

示例脚本:

function delFilterViews() {
  var ss = SpreadsheetApp.getActive();
  var ssId = ss.getId();
  var get = Sheets.Spreadsheets.get(ssId, {ranges: ss.getActiveSheet().getSheetName(), fields: "sheets(filterViews(filterViewId,title))"});
  var resource = get.sheets.reduce(function(ar1, e) {
    if ("filterViews" in e) {
      var temp = e.filterViews.reduce(function(ar2, f) {
        if (/^Filter\s\d*/.test(f.title)) ar2.push({deleteFilterView: {filterId: f['filterViewId']}});
        return ar2;
      }, []);
      Array.prototype.push.apply(ar1, temp);
    }
    return ar1;
  }, []);
  if (resource.length > 0) Sheets.Spreadsheets.batchUpdate({requests: resource}, ssId);
}

引用文献:

关于google-apps-script - 使用 Google App 脚本删除一定数量的过滤器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57711096/

相关文章:

Python/gspread - 根据另一个单元格的内容更改单元格的内容

excel - Google 表格是否具有与 Excel 中的 WEBSERVICE 和 FILTERXML 等效的功能?

google-apps-script - 引用错误 : "AdminDirectory" is not defined

javascript - 用于检索要在 Google 表格数组中设置的 Google Drive 文档超链接的 Google 脚本

javascript - Google Apps 脚本中制表符转换为空格

google-apps-script - 使用 Google Sheets 脚本,为什么我的 if 语句在比较单元格值时总是返回 false?

javascript - 如何在 Google Apps 脚本中忽略自动回复指定的电子邮件

javascript - 在 Gmail 邮件中将 Google 表格范围(带或不带格式)作为 HTML 表格通过电子邮件发送

javascript - 通过电子邮件发送谷歌电子表格范围作为 HTML 表保留值?

node.js - 使用 Google API 在工作表中设置数据时,Google 表格会自动更改日期格式