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

如何用Apps Script复制Google表格且不复制关联脚本文件?

复制Google表格但排除绑定脚本与自定义菜单的实现方法

核心思路

直接调用Spreadsheet.copy()会连带复制表格绑定的脚本和自定义菜单,所以改用创建全新空白表格 + 逐工作表复制内容/格式的方式,彻底避开脚本的复制。

实现代码

function copySpreadsheetWithoutScripts() {
  // 获取当前源表格
  const sourceSs = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheets = sourceSs.getSheets();
  
  // 创建空白新表格
  const newSs = SpreadsheetApp.create("无脚本副本_" + sourceSs.getName());
  // 删除新表格默认的空白工作表
  newSs.deleteSheet(newSs.getSheets()[0]);
  
  // 逐个复制源工作表到新表格
  sourceSheets.forEach(sheet => {
    const copiedSheet = sheet.copyTo(newSs);
    copiedSheet.setName(sheet.getName());
  });
  
  // 可选:同步源表格的权限(按需启用)
  // const sourceFile = DriveApp.getFileById(sourceSs.getId());
  // const newFile = DriveApp.getFileById(newSs.getId());
  // sourceFile.getPermissions().forEach(perm => {
  //   if (perm.getEmail()) newFile.addEditor(perm.getEmail());
  // });
  
  Logger.log("无脚本副本已创建,ID:" + newSs.getId());
}

关键细节

  • Sheet.copyTo()方法仅复制工作表本身的内容、格式、公式、数据验证等,不会复制绑定在整个表格上的脚本和自定义菜单。
  • 先创建空白表格再删除默认工作表,保证新表格初始状态完全干净。
  • 如果需要让新表格和源表格权限一致,可以取消注释代码中的权限同步部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:40:37