Google Sheets数据迁移脚本整合静态日期戳需求求助
Google Sheets 迁移脚本整合日期戳解决方案
以下是整合了静态日期戳功能的修改版脚本,迁移时会自动在目标行的BE列添加当前日期:
function onEdit(event) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); // 获取当前日期(静态值,不会自动更新) var currentDate = new Date(); if(s.getName() == "JDE Worklist" && r.getColumn() == 1 && r.getValue() == true) { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("Printed"); var targetRow = targetSheet.getLastRow() + 1; var target = targetSheet.getRange(targetRow, 1); // 迁移行数据 s.getRange(row, 1, 1, numColumns).moveTo(target); // 在BE列(第57列)添加日期戳 targetSheet.getRange(targetRow, 57).setValue(currentDate); s.deleteRow(row); } else if(s.getName() == "Printed" && r.getColumn() == 1 && r.getValue() == false) { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("PrintedArchive"); var targetRow = targetSheet.getLastRow() + 1; var target = targetSheet.getRange(targetRow, 1); // 迁移行数据 s.getRange(row, 1, 1, numColumns).moveTo(target); // 在BE列(第57列)添加日期戳 targetSheet.getRange(targetRow, 57).setValue(currentDate); s.deleteRow(row); } }
关键修改说明:
- 新增
currentDate变量获取当前时间,通过setValue写入的是静态日期,不会随时间自动更新 - 两次迁移操作的
moveTo步骤后,都通过targetSheet.getRange(targetRow, 57)定位到目标行的BE列(对应第57列),写入日期戳 - 将目标行号单独提取为
targetRow,方便后续统一定位操作位置
注意事项:
- 确保工作表中BE列已存在,若列位置调整,需将代码中的
57改为对应列的序号 - 脚本依赖
onEdit内置触发器,需确保当前账户拥有该表格的脚本编辑权限
内容的提问来源于stack exchange,提问作者Albert van wyk
相关产品推荐
相关产品推荐

