如何自动记录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
相关产品推荐
相关产品推荐

