如何通过Power Automate从SharePoint的sourcedoc GUID获取文件内容
问题背景
终端用户提供的SharePoint文件URL分两种:
- Style A:通过「共享」/「复制链接」生成的URL,可直接被Power Automate解析获取文件
- Style B:打开可编辑文件后从地址栏复制的URL,包含
sourcedoc参数的GUID,但该GUID并非Power Automate所需的File ID,且无文件夹结构信息,导致无法直接配置SharePoint集成
解决步骤
1. 提取Style B URL中的sourcedoc GUID
Style B URL格式示例:https://your-tenant.sharepoint.com/sites/your-site/_layouts/15/Doc.aspx?sourcedoc={12345678-1234-1234-1234-1234567890AB}&action=edit
用Power Automate的撰写动作,通过表达式提取GUID(去除花括号):
replace(replace(split(triggerBody()['user_provided_url'], 'sourcedoc=')[1], '{', ''), '}', '')
或者用正则表达式匹配更精准:
first(regexMatch(triggerBody()['user_provided_url'], '(?<=sourcedoc=)[^{]+(?=&|$)'))
2. 通过SharePoint REST API获取文件核心信息
使用Power Automate的发送HTTP请求到SharePoint动作,调用接口获取文件的File ID和路径:
- 方法:GET
- Uri:
/_api/web/getFileById('@{outputs('提取sourcedoc_GUID')}') - Headers:添加
Accept: application/json;odata=nometadata(简化返回的JSON结构)
API返回的关键字段:
Id:Power Automate「获取文件内容」动作所需的File IDServerRelativeUrl:文件的服务器相对路径(可用于验证文件位置)
3. 集成到Power Automate流程
- 调用上述API后,用解析JSON动作处理返回结果,schema可从API返回的示例自动生成
- 使用获取文件内容动作,传入SharePoint站点地址和解析得到的
Id,即可获取文件内容 - 将获取到的文件内容附加到邮件发送
注意事项
- 确保Power Automate运行账户拥有该文件的访问权限,否则API会返回403权限错误
- 如果遇到API返回文件不存在,检查提取的GUID是否正确,确认用户提供的URL对应的文件未被删除或移动
内容的提问来源于stack exchange,提问作者Guy
相关产品推荐
相关产品推荐

