You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Office365-REST-Python-Client获取SharePoint文件共享链接报错求助

解决Office365-REST-Python-Client获取SharePoint文件共享链接的400错误

可能的问题及修复方案

1. 服务器相对URL拼接错误

从错误日志的URL可见,文件路径为/sites/Test_sharepoint12/Shared Documents/Base_documentaire/cross comparison.xlsx,检查你的路径拼接逻辑:

  • 确保file_folder末尾包含斜杠(例如Shared Documents/Base_documentaire/),否则会导致文件名与文件夹名直接拼接,形成无效路径。
  • 改用f-string优化拼接代码,提升可读性:
server_relative_url = f'/sites/Test_sharepoint12/{file_folder}{file_name}'
target_file = ctx.web.get_file_by_server_relative_url(server_relative_url)

2. 先加载文件对象再调用共享链接方法

先加载文件基础信息,确认文件存在后再创建共享链接:

from office365.sharepoint.sharing.sharing_link_kind import SharingLinkKind

ctx = ClientContext(url_shrpt, ctx_auth)
server_relative_url = f'/sites/Test_sharepoint12/{file_folder}{file_name}'
target_file = ctx.web.get_file_by_server_relative_url(server_relative_url)

# 加载文件对象,验证文件存在
ctx.load(target_file)
ctx.execute_query()

# 创建匿名查看链接
result = target_file.share_link(SharingLinkKind.AnonymousView).execute_query()
link_url = result.value.sharingLinkInfo.Url
print(link_url)

3. 检查站点共享权限设置

若站点未开启匿名共享权限,调用SharingLinkKind.AnonymousView会触发错误:

  • 登录SharePoint站点,进入站点设置 > 站点权限 > 站点共享设置
  • 确认允许创建匿名访问的共享链接(需站点管理员权限操作)

4. 改用文件夹+文件的方式获取文件对象

若直接通过服务器相对URL获取文件失败,尝试先获取文件夹,再从中定位文件:

folder = ctx.web.get_folder_by_server_relative_url(f'/sites/Test_sharepoint12/{file_folder}')
target_file = folder.files.get_by_name(file_name)
ctx.load(target_file)
ctx.execute_query()

result = target_file.share_link(SharingLinkKind.AnonymousView).execute_query()
link_url = result.value.sharingLinkInfo.Url
print(link_url)

5. 替代方案:通过ListItem创建共享链接

如果以上方法均无效,尝试通过文件对应的ListItem生成共享链接:

server_relative_url = f'/sites/Test_sharepoint12/{file_folder}{file_name}'
target_file = ctx.web.get_file_by_server_relative_url(server_relative_url)
list_item = target_file.listItemAllFields
ctx.load(list_item)
ctx.execute_query()

result = list_item.share_link(SharingLinkKind.AnonymousView).execute_query()
link_url = result.value.sharingLinkInfo.Url
print(link_url)

内容的提问来源于stack exchange,提问作者user22228371

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:47:32