从 google 个工作表中删除过滤的视图和超链接

Delete filtered Views and hyperlinks from google sheets

这是

的扩展

我有 sheet 个 sheet 个名字(sheet A、B 和 C 列中的 1 个)。我想要 Sheet 2 , sheet 3 和 Sheet 4 中的人的销售信息.

如果可能,请添加一个功能来删除Sheet1 中A、B 和C 列的过滤视图和超链接。我想要删除每列中名称的筛选视图和超链接的选项。我的意思是,不是删除所有过滤视图。输入将是每列的名称,输出将删除这些名称的超链接和过滤器视图(这样我就可以选择只删除列 A 和列 B 的视图和超链接,而不是删除所有)。

示例图片:

我在 sheet1 中有名字。所有列都有超链接。现在我想要一个删除过滤器功能来仅从 C 列(名称列表 1)中删除过滤器视图和超链接。

Sheet1 具有所有超链接:

Sheet1 当删除功能仅应用于名称列表 1 中的名称时:

以防万一,下面是如何从列 'C' 中删除所有链接的示例:

function remove_links_from_col_C() {
  var range = SpreadsheetApp.getActiveSheet().getRange('C5:C');
  var values = range.getDisplayValues();
  range.clear().setValues(values);
}

如果您有彩色背景并且需要保持它们完好无损,可以这样做:

function remove_links_from_col_C() {
  var range = SpreadsheetApp.getActiveSheet().getRange('C5:C');
  var backgrounds = range.getBackgrounds(); // <--- save backgrounds
  var values = range.getDisplayValues();
  range.clear().setValues(values);
  range.setBackgrounds(backgrounds); // <--- restore backgrounds
}

我相信你的目标如下。

  • 通过给出范围,您想删除过滤视图并想重置“Sheet1”。

在这种情况下,下面的示例脚本怎么样?

示例脚本:

在您使用此脚本之前,please enable Sheets API at Advanced Google services

function myFunction() {
  // Please set the range you want to delete the filter views.
  var obj = { src: "Sheet1", dst: ["C4:C", "G4:G"] };

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssId = ss.getId();
  var sheet = ss.getSheetByName(obj.src);
  var ids = obj.dst.flatMap(e => {
    var range = sheet.getRange(e);
    var richTextValues = range.getRichTextValues();
    var fids = richTextValues.flatMap(([r], i) => {
      var url = r.getLinkUrl();
      return url ? [url.split("=").pop()] : [];
    });
    var bk = range.getBackgrounds();
    range.clearFormat().setBackgrounds(bk).setRichTextValues(richTextValues.map(([r]) => [r.copy().setLinkUrl(null).build()]));
    return fids.map(f => ({ deleteFilterView: { filterId: f } }));
  });
  if (ids.length > 0) Sheets.Spreadsheets.batchUpdate({ requests: ids }, ssId);
}
  • 在此示例脚本中,var obj = { src: "Sheet1", dst: ["C4:C", "G4:G"] } 重置了您的列“C”和“G”。

参考文献: