如何修改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
相关产品推荐
相关产品推荐

