如何通过Power Automate或Power Apps获取SharePoint库视频时长
你之前用标准SharePoint连接器的Get file properties/Get file metadata/Get file content拿不到时长,是因为视频时长属于SharePoint媒体服务自动爬取的隐藏扩展属性,默认不会在标准连接器返回字段里,手动在详情页看到的时长实际存储在文档库隐藏字段_vti_dur中,值为毫秒级整数,以下是两种可落地的实现路径:
方案1:Power Automate上传时预提取(推荐,Power Apps读取性能最优)
这个方案会在视频上传后自动把时长写入文档库自定义列,Power Apps后续直接读列值即可,无额外请求开销:
- 提前在目标视频文档库新建自定义列,列名设为
视频时长,类型选单行文本或者数字都可以 - 新建自动化流,触发器选择「SharePoint - 当文件被创建时(仅属性)」,绑定对应文档库
- 新增「延迟」动作,设置等待时间1分钟,规避SharePoint爬取媒体属性的延迟窗口,避免拿到空值
- 新增「发送HTTP请求到SharePoint」动作,参数配置如下:
- 站点地址:选择文档库所属的SharePoint站点
- 请求方法:
GET - 请求Uri:
/_api/web/lists/getbytitle('替换成你的文档库显示名称')/items(触发器输出的文件ID)?$select=_vti_dur,FileLeafRef
- 解析上一步HTTP请求返回的JSON,提取
_vti_dur字段值,除以1000得到秒数,可按需格式化为HH:MM:SS的可读时间格式 - 新增「更新文件属性」动作,把格式化后的时长值写入之前建好的
视频时长自定义列 - Power Apps端正常连接该文档库,直接读取
视频时长列的值展示即可
方案2:Power Apps端实时读取(适合存量视频场景,无需补跑历史流)
如果不想给存量上百个视频补跑流,可以在Power Apps端通过即时流按需拉取时长:
- 先在Power Automate新建即时流,触发方式选「Power Apps - 当Power Apps调用流时」,添加入参为文件ID(数字类型)
- 流内逻辑和方案1一致:传入文件ID后,调用SharePoint HTTP请求拿对应文件的
_vti_dur值,格式化后返回给Power Apps - 在Power Apps的视频列表Gallery中,给展示时长的标签控件配置公式,逐行调用上述即时流传入当前行文件ID,拿到返回值后展示
- 注意:该方案每次加载列表都会产生批量接口请求,视频条目超过50条时会有明显加载延迟,不适合大体量视频库使用
踩坑提示:如果遇到部分视频拿不到
_vti_dur值,先确认视频编码为SharePoint支持的标准媒体格式(MP4、MOV、WMV等),特殊编码、加密的视频不会被SharePoint自动爬取时长属性,这类场景需要额外加媒体解析动作读取文件元数据。
内容的提问来源于stack exchange,提问作者ssmolen
相关产品推荐
相关产品推荐

