Power Automate中如何从Excel内SharePoint链接获取文件元数据?
步骤1:从Excel中的SharePoint链接提取关键标识
SharePoint共享链接里包含可用于定位文件的核心参数,用Power Automate表达式直接提取即可:
- 若为标准站点文件链接(如
https://xxx.sharepoint.com/sites/TeamName/Shared%20Docs/Report.xlsx?web=1),提取服务器相对路径:
替换replace(split(outputs('获取Excel行')?['body/文件链接'], '?')[0], 'https://xxx.sharepoint.com', '')https://xxx.sharepoint.com为你的SharePoint站点根地址,最终得到类似/sites/TeamName/Shared%20Docs/Report.xlsx的路径。 - 若为带权限的共享链接(含
uniqueId参数),直接提取File ID:
提取出的字符串就是文件的唯一ID,可直接用于后续步骤。split(split(outputs('获取Excel行')?['body/文件链接'], 'uniqueId=')[1], '&')[0]
步骤2:用提取的标识获取文件元数据
方法一:使用「Get file metadata」步骤
在「Apply to each」循环内添加该步骤,将提取到的File ID或服务器相对路径填入「File Identifier」:
- 用File ID:直接通过表达式引用提取到的
uniqueId值 - 用服务器相对路径:选择「Enter custom value」,粘贴提取后的路径内容
方法二:用「Send an HTTP request to SharePoint」兜底(无需高级功能)
如果上述方法失效,调用SharePoint REST API获取元数据:
- Site Address:填写你的SharePoint站点地址
- Method:选择GET
- Uri:
- 用File ID时:
/_api/web/getfilebyid('{提取的File ID}')/ListItemAllFields - 用相对路径时:
/_api/web/getfilebyserverrelativeurl('{提取的相对路径}')/ListItemAllFields
- 用File ID时:
- 从响应结果中,用表达式
outputs('Send_an_HTTP_request_to_SharePoint')?['body/Modified']获取最后更新时间。
步骤3:判断超时并发送通知
在「Apply to each」内添加「Condition」步骤:
- 左侧用表达式计算当前时间与文件更新时间的天数差:
该值为超时天数(1天对应864000000000个时间刻度)div(subtract(ticks(utcNow()), ticks(outputs('Get_file_metadata')?['body/LastModified'])), 864000000000) - 右侧填入你设定的阈值(如7),条件选择「is greater than」
- 条件满足时,添加「Send an email (V2)」步骤,将文件名称、链接、超时天数等信息填入邮件内容,发送给相关人员。
优化建议
- 建议在Excel中直接存储文件的服务器相对路径或File ID,比共享链接更稳定,省去每次解析链接的步骤。
- 调整「Apply to each」的并行度设置(默认10),若文件数量较多可适当调高,提升流的运行效率。
内容的提问来源于stack exchange,提问作者user22930548
相关产品推荐
相关产品推荐

