Google Sheets编辑行时复制指定单元格并添加时间戳问题
解决Google Sheets编辑行时同步数据并添加时间戳的问题
问题说明
在Main工作表编辑任意行时,需要将该行的道路名称、电话同步到Updates工作表,同时在Updates的C列添加当前编辑的时间戳,现有onEdit脚本仅能同步数据,缺少时间戳功能。
修改后的完整脚本
替换原有onEdit函数为以下代码:
function onEdit(e) { const editRange = e.range; const sourceSheet = editRange.getSheet(); // 仅响应Main工作表的编辑事件 if (sourceSheet.getName() !== "Main") return; const rowNum = editRange.getRow(); // 请根据实际列位置修改参数:getRange(行号, 列号),1=A列、2=B列... const roadName = sourceSheet.getRange(rowNum, 1).getValue(); const phone = sourceSheet.getRange(rowNum, 2).getValue(); const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Updates"); if (!targetSheet) { SpreadsheetApp.getUi().alert("未找到Updates工作表,请确认名称拼写"); return; } // 获取当前时间戳,可自定义格式 const editTime = new Date(); // 如需自定义时间格式,替换上面一行为: // const editTime = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss"); // 追加数据到Updates表末尾 targetSheet.appendRow([roadName, phone, editTime]); }
关键配置说明
- 列位置调整:如果道路名称、电话不在A、B列,修改
getRange(rowNum, 1)和getRange(rowNum, 2)中的列号(例如道路在C列则写3) - 时间格式自定义:取消代码中注释行的注释,替换默认的
new Date(),即可生成如2024-05-20 14:30:00格式的时间戳 - 触发限制:脚本仅在编辑
Main工作表时执行,其他工作表的编辑不会触发同步逻辑
验证操作
- 打开目标Google Sheets文件,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 删除原有脚本代码,粘贴上述代码,点击保存按钮并命名项目
- 返回
Main工作表,编辑任意一行的内容 - 切换到
Updates工作表,查看是否已新增包含道路名称、电话和时间戳的行
内容的提问来源于stack exchange,提问作者IVMC Peabody
相关产品推荐
相关产品推荐

