You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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]);
  }
}

使用方法

  1. 打开目标谷歌表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」进入脚本编辑页
  2. 清空编辑页默认代码,粘贴上述完整代码
  3. 点击保存按钮,自定义项目名称后按提示授予脚本访问表格的权限
  4. 回到表格页面,在A列任意行录入dd/MM/yyyy格式的日期,对应行B/C/D列会自动生成递增后的日期

内容的提问来源于stack exchange,提问作者Bob Hardball

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:45:07