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

能否通过.copy()方法仅复制电子表格的可见工作表?

仅复制电子表格可见工作表的可行方案

原生的copy()方法无法直接指定只复制可见工作表,不过可以通过以下方式实现需求:

  • 先创建一个空白的目标电子表格
  • 遍历原文件的所有工作表,筛选出可见的工作表
  • 将筛选后的可见工作表逐个复制到目标文件中

代码示例

function copyOnlyVisibleSheets(destName) {
  const sourceSs = SpreadsheetApp.getActiveSpreadsheet();
  // 创建空白目标电子表格
  const destSs = SpreadsheetApp.create(destName);
  
  // 删除目标文件默认的空白工作表(可选)
  const defaultSheet = destSs.getSheetByName('Sheet1');
  if (defaultSheet) {
    destSs.deleteSheet(defaultSheet);
  }

  // 遍历原文件所有工作表,复制可见表
  const sourceSheets = sourceSs.getSheets();
  sourceSheets.forEach(sheet => {
    // 判断工作表是否可见:排除用户手动隐藏和系统隐藏的表
    if (!sheet.isSheetHiddenByUser() && !sheet.isSheetHidden()) {
      sheet.copyTo(destSs).setName(sheet.getName());
    }
  });

  return destSs;
}

说明

  • isSheetHiddenByUser() 用于判断工作表是否被用户手动隐藏,isSheetHidden() 用于判断是否被系统隐藏(比如表单自动生成的响应表),可根据实际需求调整判断条件
  • 该方案直接只复制可见工作表,无需先复制整个文件再删除隐藏表,避免了多余的操作步骤
  • 操作过程不会改动原文件,完全符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:15:16