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

如何自动记录SharePoint中Excel单元格修改者的姓名与邮箱?

解决方案:SharePoint Excel自动记录修改者信息

方法一:简化版Power Automate配置(无需复杂编程)

  • 步骤1:创建触发流
    选择「当Excel Online中的行被修改时」触发器,配置:

    • 站点地址:填入你的SharePoint站点URL
    • 库名称:选择存放Excel的文档库
    • 文件:选中你的目标Excel文件
    • 表:确保数据已转为Excel表格(按Ctrl+T生成),选择对应表名
    • 触发条件:添加公式@not(equals(triggerBody()?['标记列内部名称'], triggerBody()?['Original标记列内部名称'])),替换「标记列内部名称」为你C列的实际内部名称(可在「表格设计」→「管理列」中查看)
  • 步骤2:获取当前用户信息
    添加「Office 365用户 - 获取我的资料」动作,无需额外配置,自动获取修改者姓名和邮箱。

  • 步骤3:回写数据到Excel
    添加「Excel Online - 更新行」动作,配置:

    • 站点地址、库名称、文件、表:与触发器保持一致
    • 行ID:选择触发器输出的「行ID」
    • D列(姓名列):选择「获取我的资料」中的「显示名称」
    • E列(邮箱列):选择「获取我的资料」中的「用户主体名称」
  • 关键注意

    • 用站点管理员账户创建流,确保流有足够权限访问文件和用户信息
    • 流触发存在1-2分钟延迟,属于正常现象

方法二:一键式Office Scripts代码(复制即用)

  • 步骤1:打开Excel Online
    在SharePoint上打开目标Excel文件,点击顶部「自动化」→「新建脚本」

  • 步骤2:替换默认代码
    删除脚本编辑器中的默认代码,粘贴以下代码:

    function main(workbook: ExcelScript.Workbook) {
      const activeSheet = workbook.getActiveWorksheet();
      const activeCell = workbook.getActiveCell();
      // 仅处理C列的修改(JS列索引从0开始,C列对应索引2)
      if (activeCell.getColumnIndex() === 2) {
        const rowIndex = activeCell.getRowIndex();
        const currentUser = workbook.getContext().user;
        // 写入姓名到D列(索引3)
        activeSheet.getRangeByIndexes(rowIndex, 3, 1, 1).setValue(currentUser.displayName);
        // 写入邮箱到E列(索引4)
        activeSheet.getRangeByIndexes(rowIndex, 4, 1, 1).setValue(currentUser.email);
        workbook.save();
      }
    }
    
  • 步骤3:设置自动运行(可选)
    点击「自动化」→「脚本设置」,勾选「在保存时运行此脚本」,这样用户修改C列并保存后,会自动填充D、E列;也可插入形状按钮,右键绑定该脚本,手动触发。

  • 关键注意

    • 确保Excel已保存至SharePoint/OneDrive,本地文件无法使用Office Scripts
    • 管理员需在Office 365管理中心开启Office Scripts权限,用户需拥有文件编辑权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:33:27