如何通过Excel Rest API或非宏方式获取SharePoint Excel修改行至Power Automate云流
一、用REST API结合版本历史找修改行
- 先获取文件版本历史:调用SharePoint REST API拿到Excel的所有版本记录
返回结果包含每个版本的创建时间、修改人,对比最新版和上一版的时间戳,就能锁定更新区间。GET /_api/web/GetFileByServerRelativeUrl('/sites/[站点名]/[库名]/[文件名].xlsx')/Versions - 再拉取对应版本的Excel数据:调用Excel REST API读取工作表内容
读取整个已用数据区域:
读取指定范围(比如A1到D10):GET /_api/web/GetFileByServerRelativeUrl('/sites/[站点名]/[库名]/[文件名].xlsx')/Workbook/Worksheets('[工作表名]')/UsedRange/ValuesGET /_api/web/GetFileByServerRelativeUrl('/sites/[站点名]/[库名]/[文件名].xlsx')/Workbook/Worksheets('[工作表名]')/Range('A1:D10')/Values - 对比差异:把新旧版本的数据都导入Power Automate,用“筛选数组”动作或者写个简单脚本(比如JavaScript)逐行对比,找出修改过的行。
二、Power Automate直接触发捕获修改行(更简便)
- 给Excel加一个修改时间戳列(比如命名为
LastModified,用=NOW()公式自动生成,或者每次修改时通过Power Automate更新) - 将Excel数据区域转成结构化表格(插入→表格),这样就能使用Power Automate的“当Excel表格行被修改时”触发器
- 触发后直接获取当前修改的行数据,无需手动对比版本,直接传入审批流程即可。
三、版本历史API的额外细节
- 如果需要获取旧版本的Excel内容,用以下接口获取二进制流:
拿到流之后,用Power Automate的“Excel Online (Business)”连接器解析成可对比的结构化数据。GET /_api/web/GetFileByServerRelativeUrl('/sites/[站点名]/[库名]/[文件名].xlsx')/Versions([版本号])/OpenBinaryStream
关键注意点
- 确保SharePoint文档库已开启版本历史(库设置→版本历史记录→勾选保留版本选项)
- 调用REST API时,请求头需添加
Accept: application/json;odata=verbose,Power Automate中调用会自动处理认证,手动测试则需要获取SharePoint OAuth令牌 - 针对大型Excel文件,优先通过时间戳列筛选数据,避免拉取全量数据导致性能问题。
内容的提问来源于stack exchange,提问作者Harindu Lakshan
相关产品推荐
相关产品推荐

