如何通过JSON列格式化在Sharepoint列表中获取当前用户
解决方案
方案1:修正JSON列格式化语法直接获取当前用户信息
你之前尝试获取当前用户信息失败大概率是语法使用有误,SharePoint V2列格式化架构支持通过@currentUser对象直接获取当前访问用户的身份信息,其中@currentUser.title对应用户的显示名,@currentUser.email对应用户的登录邮箱。
修改后的完整JSON代码如下:
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "a", "attributes": { "href": "='mailto:' + join([$Co_x002d_ordinator.email], ';') + '?subject=OT Request- ' + join([$Position], ';') + ', ' + toLocaleDateString([$Shift_x0020_start]) + '&body=申请人:' + @currentUser.title + '%0D%0A我有意申请以下加班班次:' + join([$Position], ';') + ' 班次日期:' + toLocaleDateString([$Shift_x0020_start]) + ' 班次开始时间:' + toLocaleTimeString([$Shift_x0020_start])" }, "children": [ { "elmType": "span", "style": { "display": "inline-block", "padding": "0 4px" }, "attributes": { "iconName": "Mail" } }, { "elmType": "span", "txtContent": "Request shift" } ] }
注意:代码中
%0D%0A是mailto链接的换行符,可让邮件内容分段展示更清晰。
使用前请确认以下前提:
- 你当前使用的JSON schema为V2版本(你现有代码的schema配置符合要求)
- 测试前先清除浏览器缓存,重新登录SharePoint避免缓存旧配置导致失效
方案2:改用Power Automate流实现更稳定的申请流程
如果你所在的SharePoint环境受限无法使用@currentUser对象,或者希望避免mailto依赖本地邮件客户端的兼容性问题,推荐改用Power Automate实现需求:
- 在加班班次列表中新建即时云流,触发条件选择「对于选中的项」
- 流可直接获取触发用户的姓名、邮箱等身份信息,无需额外配置提取规则
- 配置发送邮件动作,自动拼接班次信息、申请人信息发送给协调人,还可同步更新列表中的班次申请状态,方便后续统一管理
- 最后将JSON列格式化中的超链接替换为该流的触发链接即可
内容的提问来源于stack exchange,提问作者user11263396
相关产品推荐
相关产品推荐

