使用Frends eiPaaS从O365版SharePoint列表获取数据可行性咨询
当然可以,下面是几种经过验证的实现方案,覆盖不同技术栈和场景:
方案1:Microsoft Graph API(官方推荐)
这是微软为O365生态提供的统一API,能无缝对接SharePoint列表操作,同时支持其他O365服务。
- 核心步骤:
- 在Azure AD注册应用,获取客户端ID、客户端密钥(或证书),并授予
Sites.Read.All(只读)或Sites.ReadWrite.All(读写)权限。 - 通过OAuth2流程获取访问令牌。
- 调用API端点获取列表项:
基础请求示例(GET):https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items
可通过$select指定返回字段、$filter过滤数据、$top控制返回条数,灵活定制结果。
- 在Azure AD注册应用,获取客户端ID、客户端密钥(或证书),并授予
- Python代码示例:
import requests # 替换为你的实际值 access_token = "YOUR_ACCESS_TOKEN" site_id = "YOUR_SITE_ID" list_id = "YOUR_LIST_ID" api_url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/lists/{list_id}/items?$select=id,Title,Description" headers = {"Authorization": f"Bearer {access_token}"} response = requests.get(api_url, headers=headers) response.raise_for_status() # 处理请求错误 list_items = response.json() # 打印结果 for item in list_items.get("value", []): print(f"ID: {item['id']}, Title: {item['Title']}")
方案2:SharePoint原生REST API
如果只需要针对SharePoint操作,直接调用它的原生REST接口更直接。
- 核心步骤:
- 获取访问令牌(支持Azure AD认证或用户OAuth)。
- 调用端点:
https://{tenant-name}.sharepoint.com/sites/{site-name}/_api/web/lists/getbytitle('{list-title}')/items
- Python代码示例:
import requests # 替换为你的实际值 access_token = "YOUR_ACCESS_TOKEN" site_url = "https://your-tenant.sharepoint.com/sites/your-site" list_title = "Your List Title" api_url = f"{site_url}/_api/web/lists/getbytitle('{list_title}')/items?$select=ID,Title,Description" headers = { "Authorization": f"Bearer {access_token}", "Accept": "application/json;odata=nometadata" # 简化返回格式 } response = requests.get(api_url, headers=headers) response.raise_for_status() list_items = response.json() for item in list_items.get("value", []): print(f"ID: {item['ID']}, Title: {item['Title']}")
方案3:使用Office365-REST-Python-Client库
这个第三方Python库封装了SharePoint和O365的操作细节,无需手动拼接API请求,开发效率更高。
- 安装依赖:
pip install office365-rest-python-client - 代码示例:
from office365.sharepoint.client_context import ClientContext from office365.runtime.auth.client_credential import ClientCredential # 替换为你的实际值 client_id = "YOUR_CLIENT_ID" client_secret = "YOUR_CLIENT_SECRET" site_url = "https://your-tenant.sharepoint.com/sites/your-site" list_title = "Your List Title" # 初始化上下文 ctx = ClientContext(site_url).with_credentials(ClientCredential(client_id, client_secret)) # 获取目标列表 target_list = ctx.web.lists.get_by_title(list_title) # 获取列表项 items = target_list.items.get().execute_query() # 遍历输出 for item in items: print(f"ID: {item.properties['ID']}, Title: {item.properties['Title']}")
关键注意事项
- 权限配置:确保注册的Azure AD应用或登录用户拥有目标列表的读取权限,否则会返回权限错误。
- 站点/列表ID获取:可以通过Graph API的
/sites端点查询,或在SharePoint站点页面查看源代码中的spPageContextInfo对象获取。 - 认证方式:除了应用权限(适合后台服务),也支持用户交互式登录(适合桌面/前端应用)。
内容的提问来源于stack exchange,提问作者Tomas H
相关产品推荐
相关产品推荐

