【发布时间】:2020-10-13 16:35:12
【问题描述】:
我已使用 Python 访问 SharePoint Online 中的列表,并希望将列表数据保存到文件(csv 或 json)中以对其进行转换并对某些元数据进行排序以进行迁移
我拥有对我正在连接的 Sharepoint 站点的完全访问权限(客户端 ID、密码..)。
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.runtime.client_request import ClientRequest
from office365.sharepoint.client_context import ClientContext
我已经设置好了:
app_settings = {
'url': 'https://company.sharepoint.com/sites/abc',
'client_id': 'id',
'client_secret': 'secret'
}
连接到网站:
context_auth = AuthenticationContext(url=app_settings['url'])
context_auth.acquire_token_for_app(client_id=app_settings['client_id'],
client_secret=app_settings['client_secret'])
ctx = ClientContext(app_settings['url'], context_auth)
获取列表并检查标题:
lists = ctx.web.lists
ctx.load(lists)
ctx.execute_query()
for lista in lists:
print(lista.properties["Title"]) # this gives me the titles of each list and it works.
lists 是一个 ListCollection 对象
从前面的代码中,我看到我想要获取标题为:“分析A”的列表:
a1 = lists.get_by_title("Analysis A")
ctx.load(a1)
ctx.execute_query() # a1 is a List item - non-iterable
然后我得到该列表中的数据:
a1w = a1.get_items()
ctx.load(a1w)
ctx.execute_query() # a1w is a ListItemCollection - iterable
想法1:df转json/csv
df1 = pd.DataFrame(a1w) #doens't work)
想法2:
点击此链接:How to save a Sharepoint list as a file?
执行json.loads 命令时出错:
JSONDecodeError: Extra data: line 1 column 5 (char 4)
替代方案:
我尝试了 Shareplum,但无法连接它,就像我使用 office365-python-rest 所做的那样。我的猜测是它没有带有客户端 ID 和客户端密码的授权选项(据我所知)
你会怎么做?还是我错过了什么?
【问题讨论】:
标签: python json sharepoint sharepoint-online