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

如何使用Office Scripts在Excel Online为被修改行动态写入更新日期

最终可运行脚本

function main(workbook: ExcelScript.Workbook, modifiedRowNum: number) {
  // 1. 获取目标工作表
  const targetSheet = workbook.getWorksheet("Form1");
  if (!targetSheet) throw new Error("未找到Form1工作表");

  // 2. 动态获取工作表实际使用范围,兼容空值、行列动态变动场景
  const usedRange = targetSheet.getUsedRange();
  if (!usedRange) throw new Error("工作表无有效数据");

  // 3. 动态定位「Modified Date」列索引,兼容列位置变动场景
  const headerValues = usedRange.getRow(0).getValues()[0];
  const modifiedDateColIndex = headerValues.findIndex(header => header?.toString().trim() === "Modified Date");
  if (modifiedDateColIndex === -1) throw new Error("未找到Modified Date列");

  // 4. 转换行号为0-based索引(Excel传入行号为1-based)
  const targetRowIndex = modifiedRowNum - 1;
  // 校验行号合法性
  if (targetRowIndex < 1 || targetRowIndex >= usedRange.getRowCount()) throw new Error("修改行号不合法");

  // 5. 生成当前时间并写入对应单元格
  const now = new Date();
  const dateTimeStr = `${now.toLocaleDateString()} ${now.toLocaleTimeString()}`;
  targetSheet.getCell(targetRowIndex, modifiedDateColIndex).setValue(dateTimeStr);
}

自动触发配置步骤

要实现修改行后自动写入时间,需要搭配Power Automate流完成触发配置:

  • 新建自动化云端流,触发器选择「Excel Online (Business)」下的「当行被修改时」
    • 选择对应的站点、文档库、Form1工作表,设置要监听的列范围
  • 新增操作,选择「Excel Online (Business)」下的「运行脚本」
    • 选择同位置的工作簿,选择上面编写的脚本,将触发器返回的行号参数填入脚本的modifiedRowNum输入框
  • 保存流即可生效

适配说明

  • 不需要硬编码列号:自动从表头匹配「Modified Date」列,列调整位置后无需修改代码
  • 兼容空值、动态行列:getUsedRange会自动识别工作表实际有数据的范围,不受中间空行空列影响
  • 自动定位修改行:通过触发器传入的实际修改行号定位,不需要手动指定单元格

如果仅需要手动运行脚本更新当前选中行的修改时间,可以删除modifiedRowNum参数,在代码中添加一行:

const modifiedRowNum = targetSheet.getActiveCell().getRowIndex() + 1;

工作表示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:45:07