Google Sheets:复制粘贴新增行时自动填入固定当前日期
解决Google Sheets复制粘贴行时自动填充固定日期的问题
问题根源
你当前使用的onEdit(e)是简单触发器,仅对单个单元格的手动编辑操作生效,无法捕获复制粘贴、批量插入行这类批量变更行为,因此需要改用onChange(e)触发器来覆盖这类场景。
修改后的可用脚本
替换原有脚本为以下代码,它能处理复制粘贴新增行的需求:
function onChange(e) { // 仅处理插入行或编辑类变更,且目标工作表为"Operational Sheet" if (!['INSERT_ROWS', 'EDIT'].includes(e.changeType)) return; const targetSheet = e.source.getActiveSheet(); if (targetSheet.getName() !== "Operational Sheet") return; // 获取变更涉及的行范围 const range = e.range; const startRow = range.getRow(); const rowCount = range.getNumRows(); const fixedDate = Utilities.formatDate(new Date(), "GMT+9:00", "dd.MM.yyyy"); // 批量填充C列对应行的固定日期 targetSheet.getRange(startRow, 3, rowCount, 1).setValue(fixedDate); }
关键配置步骤
onChange属于可安装触发器,需要手动配置才能生效:
- 打开目标表格的「扩展程序」→「Apps脚本」
- 粘贴上述代码后,保存项目(可自定义名称,比如"AutoFillFixedDate")
- 点击编辑器顶部的闹钟图标(触发器管理入口)
- 点击「添加触发器」,按以下参数配置:
- 选择函数:
onChange - 部署类型:「头部部署」(选择最新版本)
- 事件源:「从电子表格」
- 事件类型:「更改」
- 选择函数:
- 完成授权验证(首次授权需按提示完成权限确认)
功能说明
- 复制粘贴行到"Operational Sheet"、手动插入行时,C列对应行都会自动填入固定的当前日期(不会随时间动态更新)
- 支持批量操作,一次性处理所有新增行的日期填充
- 日期格式与时区保持你原脚本的设置:
dd.MM.yyyy、GMT+9
内容的提问来源于stack exchange,提问作者Thurman Murman
相关产品推荐
相关产品推荐

