如何用Apps Script定时批量迁移数据至其他表格并删除源数据
定时自动迁移表格数据并删除源数据的Google Apps Script实现
下面是适配你需求的脚本,替换原复选框触发逻辑,改用时间驱动触发器实现每日定时迁移:
function migrateDataDaily() { // 获取当前表格中的源数据表 const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data Source'); if (!sourceSheet) { console.log('未找到源数据表 "Data Source"'); return; } // 获取源表数据(假设第一行是表头,从第二行开始取数据) const lastRow = sourceSheet.getLastRow(); const lastCol = sourceSheet.getLastColumn(); // 如果没有数据行(只有表头),直接结束 if (lastRow <= 1) { console.log('源数据表无数据可迁移'); return; } const dataToMigrate = sourceSheet.getRange(2, 1, lastRow - 1, lastCol).getValues(); try { // 打开目标表格并获取目标数据表 const targetSpreadsheet = SpreadsheetApp.openById('1OWqOlqy_pfZXXXXXXxxxxxxx'); const targetSheet = targetSpreadsheet.getSheetByName('Database'); if (!targetSheet) { console.log('未找到目标数据表 "Database"'); return; } // 将数据追加到目标表末尾 const targetLastRow = targetSheet.getLastRow(); targetSheet.getRange(targetLastRow + 1, 1, dataToMigrate.length, dataToMigrate[0].length).setValues(dataToMigrate); // 删除源表中的数据行(保留表头) sourceSheet.deleteRows(2, lastRow - 1); console.log('数据迁移完成,源数据已删除'); } catch (error) { console.log('迁移过程出错:' + error.message); } }
脚本说明:
- 先定位源数据表,检查是否存在及是否有可迁移数据
- 读取源表中除表头外的所有数据(若源表无表头,把
2改成1、lastRow -1改成lastRow即可) - 打开指定ID的目标表格,定位目标数据表
- 将数据追加到目标表最后一行之后
- 删除源表数据行(保留表头,无需表头可调整删除范围)
- 加入异常捕获,避免迁移出错导致脚本中断
设置时间驱动触发器:
- 打开脚本编辑器(工具 > 脚本编辑器)
- 点击左侧菜单栏的「触发器」图标(时钟形状)
- 点击「添加触发器」按钮
- 配置选项:
- 选择要运行的函数:
migrateDataDaily - 选择部署类型:「头部部署」
- 选择事件源:「时间驱动」
- 选择时间类型:「日计时器」
- 选择时间段:「12:00-13:00」(对应每日12点左右执行)
- 选择要运行的函数:
- 点击「保存」,按提示授权脚本权限即可
注意事项:
- 确保脚本有访问目标表格的权限(首次运行会弹出授权请求,需允许)
- 若源表数据量极大,可考虑分批处理避免超时,日常数据量此脚本足够应对
- 可通过脚本编辑器「查看 > 日志」查看迁移执行情况
内容的提问来源于stack exchange,提问作者Arafat
相关产品推荐
相关产品推荐

