使用Apps Script实现谷歌表格A列日期逐列递增1天填充到B/C/D列
谷歌表格日期自动递增实现方案
修改思路
- 新增
onEdit简单触发器,A列录入内容后自动运行脚本,无需手动触发 - 增加编辑区域校验:仅当编辑A列且内容为有效日期时执行逻辑,避免无效运算
- 适配多列需求:B列递增1天、C列递增2天、D列递增3天
- 支持单行/批量录入:批量修改A列多行内容时也可同步生成对应日期
- 新增空值处理:A列清空时,对应行B/C/D列自动清空,避免遗留无效数据
完整脚本代码
// 自动触发函数:当表格内容被编辑时运行 function onEdit(e) { const sheet = e.source.getActiveSheet(); const editedRange = e.range; // 若需要仅在指定工作表生效,可取消下方注释并修改为你的工作表名称 // if (sheet.getName() !== "目标工作表名称") return; // 仅处理A列的编辑操作 if (editedRange.getColumn() !== 1) return; const timeZone = Session.getScriptTimeZone(); const dateFormat = "dd/MM/yyyy"; const startRow = editedRange.getRow(); const editRowCount = editedRange.getNumRows(); // 遍历所有被编辑的行 for (let i = 0; i < editRowCount; i++) { const currentRow = startRow + i; const rawDate = sheet.getRange(currentRow, 1).getValue(); const inputDate = new Date(rawDate); // 校验A列内容是否为有效日期 if (isNaN(inputDate.getTime())) { sheet.getRange(currentRow, 2, 1, 3).clearContent(); continue; } // 生成B/C/D列对应递增日期 const rowDates = []; for (let addDays = 1; addDays <= 3; addDays++) { const newDate = new Date(inputDate); newDate.setDate(inputDate.getDate() + addDays); rowDates.push(Utilities.formatDate(newDate, timeZone, dateFormat)); } // 批量写入对应列,减少接口调用提升运行效率 sheet.getRange(currentRow, 2, 1, 3).setValues([rowDates]); } }
使用方法
- 打开目标谷歌表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」进入脚本编辑页
- 清空编辑页默认代码,粘贴上述完整代码
- 点击保存按钮,自定义项目名称后按提示授予脚本访问表格的权限
- 回到表格页面,在A列任意行录入
dd/MM/yyyy格式的日期,对应行B/C/D列会自动生成递增后的日期
内容的提问来源于stack exchange,提问作者Bob Hardball
相关产品推荐
相关产品推荐

