You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除指定数量后的工作表,同时按名称排除特定工作表?

解决工作表批量删除问题(排除指定模板表)

修改后的代码

function deleteSheets() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = spreadsheet.getSheets();
  const excludeSheetName = "模板"; // 指定要排除的工作表名称
  const keepRegularSheetCount = 10; // 要保留的常规工作表数量

  // 拆分出排除表和可处理的常规表
  const [excludedSheets, regularSheets] = allSheets.reduce((acc, sheet) => {
    sheet.getName() === excludeSheetName ? acc[0].push(sheet) : acc[1].push(sheet);
    return acc;
  }, [[], []]);

  // 计算需要删除的常规表:保留前keepRegularSheetCount个,删除后面的
  const sheetsToDelete = regularSheets.slice(keepRegularSheetCount);

  // 倒序删除(避免删除后数组索引错乱)
  for (let i = sheetsToDelete.length - 1; i >= 0; i--) {
    spreadsheet.deleteSheet(sheetsToDelete[i]);
  }
}

代码说明

  • 排除指定表:通过excludeSheetName定义模板表名称,拆分时将其从常规表列表中分离,既不删除也不参与数量统计
  • 保留数量控制:keepRegularSheetCount设置要保留的常规工作表数量,示例中设为10,对应保留前10个常规表
  • 安全删除:用倒序遍历删除目标表,避免因删除操作导致数组长度变化引发的索引错误
  • 逻辑清晰:先拆分表类型再处理删除,彻底避免误删模板表

测试建议

运行前可以先添加日志确认要删除的表,确保无误后再执行删除:

// 在删除代码前添加日志
sheetsToDelete.forEach(sheet => {
  console.log("即将删除:" + sheet.getName());
});

内容的提问来源于stack exchange,提问作者No Name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:05:33