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

如何实现Google Sheets自动备份且不复制关联的Google Forms

解决Google Sheets备份时不复制关联Google Forms的问题

我懂你的痛点——当前的备份脚本用makeCopy()直接复制整个表格文件,会连带复制绑定的Google Forms,导致备份文件夹里多出一堆没用的表单副本。咱们可以换个思路:创建一个全新的空白表格,把原表格的内容(包括格式、数据)复制过去,这样就不会带上关联的表单了。

下面是修改后的脚本:

function backUp() {
  // 获取当前表格和备份文件夹
  const originalSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss");
  const backupName = `${originalSpreadsheet.getName()} Copy ${formattedDate}`;
  const destinationFolder = DriveApp.getFolderById("1NNhZESRq_0_DVBwzA8fvxSYGMpOa6KC_");

  // 创建新的空白表格
  const backupSpreadsheet = SpreadsheetApp.create(backupName);
  
  // 遍历原表格的所有工作表,复制到新表格
  originalSpreadsheet.getSheets().forEach(sheet => {
    sheet.copyTo(backupSpreadsheet);
  });

  // 删除新表格默认的"Sheet1"(因为我们已经复制了原表格的所有工作表)
  backupSpreadsheet.deleteSheet(backupSpreadsheet.getSheetByName("Sheet1"));

  // 将新表格移动到备份文件夹
  const backupFile = DriveApp.getFileById(backupSpreadsheet.getId());
  destinationFolder.addFile(backupFile);
  DriveApp.getRootFolder().removeFile(backupFile);
}

关键说明:

  • 用SpreadsheetApp.create()创建全新表格,这个表格不会和任何表单绑定
  • 通过sheet.copyTo()逐个复制原表格的工作表,只会复制工作表的内容、格式、公式等,不会关联原表格的表单
  • 最后把新表格从根目录移到备份文件夹,完成备份

这个方法完美避开了makeCopy()连带复制关联资源的问题,只会生成纯表格的备份文件,不会有多余的表单副本啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:03:21