请求协助:每月将Google Sheets指定工作表复制至Drive并清空数据
嘿,刚好能帮你搞定这个每月自动备份+清空的需求!咱们用Google Apps Script就能实现这个定时任务,步骤超清晰:
实现方案
1. 编写自动备份脚本
打开你的Google Sheets,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,把下面的代码粘贴进去:
function backupAndClearSheet() { // 获取当前表格 const ss = SpreadsheetApp.getActiveSpreadsheet(); const targetSheet = ss.getSheetByName('collected orders'); // 先检查目标工作表是否存在 if (!targetSheet) { console.log('找不到名为"collected orders"的工作表,请确认名称是否正确'); return; } // 生成带年月的备份文件名 const date = new Date(); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以加1并补0 const backupFileName = `订单收集备份_${year}年${month}月`; // 把工作表复制到新的表格,并保存到Drive根目录 const backupSpreadsheet = SpreadsheetApp.create(backupFileName); targetSheet.copyTo(backupSpreadsheet); // 如果你想把备份存到指定文件夹,替换上面两行成下面的代码(记得替换FOLDER_ID) // const targetFolder = DriveApp.getFolderById('你的文件夹ID'); // const backupSpreadsheet = SpreadsheetApp.create(backupFileName); // targetSheet.copyTo(backupSpreadsheet); // targetFolder.createFile(backupSpreadsheet.getBlob()); // DriveApp.getFileById(backupSpreadsheet.getId()).setTrashed(true); // 删除默认位置的临时文件 // 清空原工作表数据(保留第1行的表头) const lastRow = targetSheet.getLastRow(); if (lastRow > 1) { targetSheet.deleteRows(2, lastRow - 1); } console.log(`已完成备份:${backupFileName},原工作表数据已清空`); }
2. 设置每月末的定时触发器
代码写完后,点击左侧的「触发器」图标(时钟样式),然后点击「添加触发器」:
- 选择运行的函数:
backupAndClearSheet - 部署类型选「时间驱动」
- 时间基于选「月计时器」
- 月份中的日期选「最后一天」
- 时间选你希望执行的时间段(比如「晚上9点到10点」)
- 点击「保存」,按照提示授权脚本访问你的Sheets和Drive权限就行。
小提示
- 第一次授权时,Google会提示“此应用未验证”,别担心,点击「高级」→「转到XX脚本(不安全)」继续授权就好,因为脚本是你自己写的,绝对安全。
- 如果你的表头不在第1行,记得修改清空数据的代码,把
deleteRows(2, lastRow - 1)里的起始行改成你表头的下一行。 - 要找文件夹ID的话,打开目标文件夹,URL里
folders/后面的一串字符就是ID。
内容的提问来源于stack exchange,提问作者Luke Suter
相关产品推荐
相关产品推荐

