提问人:gelonida 提问时间:11/17/2023 更新时间:11/17/2023 访问量:47
以编程方式获取 sharepoint 文件(我知道来自 Web 浏览器的 url)
get sharepoint file programatically (I know the url from a web browser)
问:
我从 Web 浏览器使用 sharepoint。
我可视化一个具有以下 url 的文件(xls 文件)
如果我右键单击文档,然后单击“复制 URL”,我会得到一个类型的 URL:
https://mysite.sharepoint.com/:x:/g/XXXXXXXXX-sXXXXXXXX?e=yyyyy
我的问题是我怎样才能以编程方式获取此文档:
我尝试使用 Office365-REST-Python-Client(版本 2.5.2)
并设法获取客户端上下文(使用与我的浏览器上使用的相同用户名和密码进行身份验证)
包含以下代码片段:
import os
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
def get_ctx():
sharepoint_url = os.environ["SP_URL"]
username = os.environ["SP_USER"]
password = os.environ["SP_PASSWORD"]
auth_ctx = AuthenticationContext(url=sharepoint_url)
auth_ctx.acquire_token_for_user(username, password)
ctx = ClientContext(sharepoint_url, auth_ctx)
return ctx
我设法列出了所有现有的document_libraries和其中的每个项目
def get_doc_libraries(ctx):
web = ctx.web
ctx.load(web)
ctx.execute_query()
lists = web.lists
ctx.load(lists)
ctx.execute_query()
for sp_list in lists:
props = sp_list.properties
if props['BaseTemplate'] == 101: # Document libraries
library_name = props["Title"]
doc_library = ctx.web.lists.get_by_title(library_name)
ctx.load(doc_library)
ctx.execute_query()
items = doc_library.get_items()
ctx.load(items)
ctx.execute_query()
paged_items = doc_library.items.paged(500, page_loaded=print_progress).get().execute_query()
for item in paged_items:
# do_something_with_item
我得到了几千个项目,这些项目对于这个 sharepoint url 来说可能是现实的,但大多数项目都没有标题,我不知道如何找出其中是否有任何项目引用了我有 url 的文档。
尝试使用
def get_file_with_rel_url(ctx, url, sharepoint_url):
sharepoint_url = sharepoint_url.rstrip("/")
rel_url = url.replace(sharepoint_url, "")
response = File.open_binary(ctx, rel_url)
with open("bla.xls", 'wb') as output_file:
output_file.write(response.content)
失败。
我收到以下错误消息
{"error":{"code":"-2130575338, Microsoft.SharePoint.SPException","message":{"lang":"fr-FR","value":"Le fichier /:x:/g/XXXXXX-XXXXXX n'existe pas."}}}
这意味着在英语中The file /:x:/g/XXXXXX-XXXXXX doesn't exist
我认为 Web 浏览器给出的 url 不是我应该在 API 中使用的 url。
但是我不知道如何确定正确的 url 或如何获取文档的 uid 之类的东西,我可以用它来获取它。
我查看的文件不是我拥有的文件。 它已被其他人共享,但我对它有读写权限(在我的浏览器中)
答: 暂无答案
评论