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

如何修改Google Sheets脚本将副本保存到指定归档文件夹?

修改脚本将复制的表格保存到指定归档文件夹

我来帮你搞定这个问题!要把生成的表格存到指定的归档文件夹,你只需要做两个关键修改,具体步骤和完整代码如下:

第一步:获取归档文件夹的ID

打开Google Drive里的「归档文件夹」,查看浏览器地址栏的URL,比如:
https://drive.google.com/drive/folders/abc123XYZ_ThisIsYourFolderID
其中abc123XYZ_ThisIsYourFolderID就是你的文件夹ID,把它记下来。

第二步:修改脚本代码

核心思路是:先按原逻辑创建表格(默认会在Drive根目录),然后把这个表格文件移动到你指定的归档文件夹,同时从根目录移除它。

修改后的完整代码如下(记得替换"你的归档文件夹ID"为你刚才获取的真实ID):

function copySheetValuesV4(){ 
  var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
  var sourceSheets = sourceSpreadsheet.getSheets(); 
  // 1. 先获取目标归档文件夹
  var archiveFolder = DriveApp.getFolderById("你的归档文件夹ID");
  
  // 2. 创建新表格(默认在根目录)
  var destination = SpreadsheetApp.create('03_'+sourceSpreadsheet.getName()+' _December 2017'); 
  
  // 3. 将新表格移动到归档文件夹,同时移除根目录的副本
  var destFile = DriveApp.getFileById(destination.getId());
  archiveFolder.addFile(destFile);
  DriveApp.getRootFolder().removeFile(destFile);

  for (var i = 0; i < sourceSheets.length; i++){ 
    var sourceSheet = sourceSheets[i]; 
    if (!sourceSheet.isSheetHidden()) { 
      var sourceSheetName = sourceSheet.getSheetName(); 
      var sValues = sourceSheet.getDataRange().getValues(); 
      sourceSheet.copyTo(destination) 
      var destinationSheet = destination.getSheetByName('Copy of '+sourceSheetName).setName(sourceSheetName); 
      destinationSheet.getRange(1,1,sValues.length,sValues[0].length).setValues(sValues);// 覆盖copyTo保留的公式
    } 
  }
  // 隐藏默认的sheet1(调整到循环外,避免重复执行)
  destination.getSheetByName("sheet1").hideSheet(); 
}

额外优化说明

我还帮你调整了原脚本的一个小问题:原脚本里destination.getSheetByName("sheet1").hideSheet()是写在循环内部的,这会导致每次循环都执行一次,其实只需要在循环结束后执行一次就够了,我已经把它移到了循环外面,让脚本更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:27:24