获取通过REST API删除的SharePoint文件元数据相关问题
问题描述
我们使用Microsoft CRM Portal/Power Apps Portal,已向终端用户开放文档位置。用户可从门户将文件上传至对应记录的SharePoint文件夹,也可删除文件。我们需设置一个标记,用于显示是否有一个或多个文件已上传。目前已有一个流会在SharePoint项创建时运行,获取所有元数据后更新CRM中对应记录的标记。
当从门户删除文件时,我们仅能获取文件名。由于门户使用SharePoint REST API进行删除操作,这些文件不会进入回收站。我并非SharePoint专家,但从SharePoint界面删除文件时,文件会进入回收站,我可从中获取元数据。
请问是否有方法获取已删除文件的元数据以知晓其所在文件夹,或是能否启用通过REST API删除文件时的回收站功能?
解决方案
一、启用REST API删除时的回收站功能
SharePoint REST API支持将文件移入回收站而非永久删除,只需调整调用的接口:
- 替换默认的
DELETE请求,改用POST请求调用/_api/web/getfilebyserverrelativeurl('<文件相对路径>')/recycle()接口,执行后文件会进入回收站,保留完整元数据。 - 如果使用Power Apps Portal自带的文档组件,需要自定义组件的删除逻辑,将原生的删除请求替换为上述
recycle()接口调用。
二、获取已删除文件的元数据
如果文件已经被永久删除,可通过以下方式回溯元数据:
- 查看SharePoint审计日志:在SharePoint管理中心的审计日志中筛选文件删除事件,日志会包含文件原路径、删除时间、操作人等完整元数据。可以通过Power Automate定期拉取审计日志,匹配文件名后提取对应的文件夹路径。
- 利用版本历史(限开启版本控制的文件):若文件开启了版本控制,即使被永久删除,仍可能从版本历史记录中找到关联的文件夹信息,但仅适用于有版本留存的文件。
三、优化标记更新逻辑(替代方案)
为避免依赖删除事件的元数据,可调整现有流的触发逻辑:
- 定期扫描:设置Power Automate每隔一段时间(如15分钟)扫描对应CRM记录的SharePoint文件夹,统计文件数量后自动更新CRM中的标记,无需依赖删除事件触发。
- 监听文件夹删除事件:直接触发流监听SharePoint文件夹的项目删除事件,此时流可直接获取被删除文件的完整元数据(含文件夹路径),无需依赖回收站,前提是流拥有读取删除事件上下文的权限。
内容的提问来源于stack exchange,提问作者Deeps
相关产品推荐
相关产品推荐

