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

SharePoint本地环境创建按钮:获取用户信息存入Excel,求技术方案

方案1:Python 脚本 + SharePoint REST API(推荐,贴合你的技术栈)

因为你擅长Python,这个方案不需要接触JS/TS,直接用Python调用SharePoint接口完成操作,适合快速落地。

核心步骤:

  • 获取当前用户信息:调用SharePoint内置的/_api/web/currentuser接口,域内环境下用Windows认证即可自动获取用户姓名、邮箱。
  • 写入Excel表格:
    1. 将SharePoint上的Excel文件通过UNC路径直接访问(比如\\your-sharepoint-site\Shared Docs\user_records.xlsx),用pandas或openpyxl像操作本地文件一样写入数据。
    2. 也可以用Microsoft Graph API操作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的路径,用户点击即可自动运行脚本。

方案2:SharePoint 经典页 + 极简JS(不用深入学习SPFx)

如果必须在页面内嵌按钮,可利用SharePoint经典页的脚本编辑器Web部件,写几行基础JS完成操作,不用复杂的框架配置。

操作步骤:

  1. 切换到SharePoint经典页面,添加脚本编辑器Web部件。
  2. 粘贴以下代码(替换站点地址和列表名称):
<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(低代码,最快落地)

完全无需编程,用微软低代码工具快速实现:

  1. 登录Power Automate,创建一个手动触发的流。
  2. 添加动作:获取当前用户配置文件(提取姓名、邮箱)→添加行到Excel表格(连接SharePoint上的Excel文件,映射字段)。
  3. 在SharePoint页面添加Power Automate按钮,关联这个流,用户点击按钮即可自动完成写入。

这个方案适合紧急任务,零学习成本,几分钟就能搭建完成。

内容的提问来源于stack exchange,提问作者arber.hal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:58:13