【问题标题】:Excel: TypeScript Get Username or Email AddressExcel:TypeScript 获取用户名或电子邮件地址
【发布时间】:2023-01-25 02:10:09
【问题描述】:
由于工作从 Google Suite 转移到 Microsoft 已经开始学习 Typescript 的基础知识。以前达到了与 VBA 相同的成绩。在阅读了几个论坛后,我想知道是否有人知道如何简单地获取使用在线 Excel 工作表的用户名或电子邮件地址?以前的 VBA 代码很简单:
dim username as string
username = Application.Username
然后这个变量可以在 A1 中设置一个值。
热烈欢迎任何建议。
最好的祝愿,
【问题讨论】:
标签:
typescript
office365
office-js
office-addins
excel-web-addins
【解决方案1】:
Office JavaScript API 不提供任何开箱即用的属性或方法。但是您可以考虑从用于 SSO 的访问令牌 (JWT) 中检索所需的信息,查看以下代码:
async function getUserData() {
try {
let userTokenEncoded = await OfficeRuntime.auth.getAccessToken();
let userToken = jwt_decode(userTokenEncoded); // Using the https://www.npmjs.com/package/jwt-decode library.
console.log(userToken.name); // user name
console.log(userToken.preferred_username); // email
console.log(userToken.oid); // user id
}
catch (exception) {
if (exception.code === 13003) {
// SSO is not supported for domain user accounts, only
// Microsoft 365 Education or work account, or a Microsoft account.
} else {
// Handle error
}
}
}
如果加载项加载到不支持 SSO 的旧版 Office,getAccessToken 调用将失败。对于 Excel、Word 和 PowerPoint 加载项,您通常希望回退到使用 Microsoft 标识平台。有关详细信息,请参阅Authenticate with the Microsoft identity platform。
有关详细信息,请参阅Enable single sign-on (SSO) in an Office Add-in。