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

共享工作簿中如何获取运行Excel Online脚本的当前用户名称?

解决Excel Online脚本获取当前运行用户的问题

问题原因

你用properties.getLastAuthor()获取的是文档属性中存储的最后修改者,这个属性由服务器端同步更新,脚本运行过程中修改文档后,该属性不会实时刷新,所以你拿到的始终是脚本执行前的上一个用户。

可行解决方案

方法1:结合Power Automate传递当前用户信息

这是最直接可靠的方式,利用Power Automate获取当前用户身份,再传递给Excel脚本:

  1. 在Power Automate中创建新流,添加**Get my profile (V2)**动作,获取当前用户的名称、邮箱等信息。
  2. 添加Excel Online (Business)的Run script动作,选择目标工作簿和脚本。
  3. 在脚本参数配置中,将Get my profile返回的Display name或User principal name作为参数传递给脚本。

对应的Excel脚本代码示例:

function main(workbook: ExcelScript.Workbook, currentUser: string) {
  // 直接使用传入的currentUser,即为运行脚本的用户
  console.log("当前运行脚本的用户:", currentUser);
  
  // 你的原有脚本逻辑,比如数据更新操作
  const properties = workbook.getProperties();
  // ...其他业务代码
}

方法2:调用Microsoft Graph API(需额外权限配置)

如果工作簿属于Office 365群组,可通过Microsoft Graph的/me端点获取当前用户信息,但需要管理员配置脚本的网络调用权限,且要处理身份验证,步骤较繁琐:

async function main(workbook: ExcelScript.Workbook) {
  try {
    const response = await fetch("https://graph.microsoft.com/v1.0/me", {
      headers: {
        "Authorization": "Bearer " + await OfficeRuntime.auth.getAccessToken({ allowSignInPrompt: true })
      }
    });
    const userInfo = await response.json();
    console.log("当前运行用户:", userInfo.displayName);
  } catch (error) {
    console.error("获取用户信息失败:", error);
  }
}

注:该方法需要管理员在Excel管理中心配置允许脚本调用Graph API的权限,且首次运行需要用户授权。

总结

优先选择Power Automate方案,无需复杂权限配置,能直接准确获取运行脚本的用户身份。

内容的提问来源于stack exchange,提问作者madejuan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:49:58