SharePoint本地环境创建按钮:获取用户信息存入Excel,求技术方案
因为你擅长Python,这个方案不需要接触JS/TS,直接用Python调用SharePoint接口完成操作,适合快速落地。
核心步骤:
- 获取当前用户信息:调用SharePoint内置的
/_api/web/currentuser接口,域内环境下用Windows认证即可自动获取用户姓名、邮箱。 - 写入Excel表格:
- 将SharePoint上的Excel文件通过UNC路径直接访问(比如
\\your-sharepoint-site\Shared Docs\user_records.xlsx),用pandas或openpyxl像操作本地文件一样写入数据。 - 也可以用Microsoft Graph API操作Excel,但需要配置应用权限,适合长期场景,紧急任务优先选UNC路径方案。
- 将SharePoint上的Excel文件通过UNC路径直接访问(比如
示例代码:
import requests from requests_ntlm import HttpNtlmAuth import pandas as pd import os # 替换为你的SharePoint站点地址和Excel文件路径 SITE_URL = "http://your-sharepoint-site" EXCEL_PATH = r"\\your-sharepoint-site\Shared Documents\user_info.xlsx" def get_current_user(): api_endpoint = f"{SITE_URL}/_api/web/currentuser?$select=Title,Email" # 自动使用当前Windows域账号认证 response = requests.get(api_endpoint, auth=HttpNtlmAuth(os.getenv("USERNAME"), os.getenv("PASSWORD"))) response.raise_for_status() user_data = response.json() return {"姓名": user_data["Title"], "邮箱": user_data["Email"]} def write_to_excel(user_info): # 初始化Excel文件(如果不存在) if not os.path.exists(EXCEL_PATH): df = pd.DataFrame(columns=["姓名", "邮箱"]) df.to_excel(EXCEL_PATH, index=False) df = pd.read_excel(EXCEL_PATH) # 可选:避免重复写入同一用户 if not df[df["邮箱"] == user_info["邮箱"]].empty: return "用户信息已存在" df = pd.concat([df, pd.DataFrame([user_info])], ignore_index=True) df.to_excel(EXCEL_PATH, index=False) return "信息写入成功" if __name__ == "__main__": try: user_info = get_current_user() result = write_to_excel(user_info) print(result) except Exception as e: print(f"出错:{str(e)}")
- 部署方式:用
pyinstaller把脚本打包成.exe文件,放到共享目录,然后在SharePoint页面添加链接按钮,指向这个exe的路径,用户点击即可自动运行脚本。
如果必须在页面内嵌按钮,可利用SharePoint经典页的脚本编辑器Web部件,写几行基础JS完成操作,不用复杂的框架配置。
操作步骤:
- 切换到SharePoint经典页面,添加脚本编辑器Web部件。
- 粘贴以下代码(替换站点地址和列表名称):
<button onclick="saveUserInfo()">保存我的信息</button> <script> function saveUserInfo() { // 1. 获取当前用户信息 fetch("/_api/web/currentuser?$select=Title,Email", { credentials: 'include', headers: { "Accept": "application/json;odata=nometadata" } }) .then(res => res.json()) .then(user => { // 2. 写入SharePoint列表,之后可手动/自动导出为Excel const listPayload = { Title: user.Title, Email: user.Email }; fetch("/_api/web/lists/getbytitle('UserRecords')/items", { method: "POST", credentials: 'include', headers: { "Content-Type": "application/json;odata=nometadata", "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value }, body: JSON.stringify(listPayload) }) .then(() => alert("信息已保存,可从列表导出Excel")) .catch(err => alert("保存失败:" + err.message)); }) .catch(err => alert("获取用户信息失败:" + err.message)); } </script>
- 前置准备:先在SharePoint创建名为
UserRecords的列表,添加Title(用于存姓名)和Email字段。用户点击按钮后信息会写入列表,后续可直接导出为Excel文件。
方案3:Power Automate(低代码,最快落地)
完全无需编程,用微软低代码工具快速实现:
- 登录Power Automate,创建一个手动触发的流。
- 添加动作:
获取当前用户配置文件(提取姓名、邮箱)→添加行到Excel表格(连接SharePoint上的Excel文件,映射字段)。 - 在SharePoint页面添加Power Automate按钮,关联这个流,用户点击按钮即可自动完成写入。
这个方案适合紧急任务,零学习成本,几分钟就能搭建完成。
内容的提问来源于stack exchange,提问作者arber.hal
相关产品推荐
相关产品推荐

