【问题标题】:How can I get a user's name from their email?如何从他们的电子邮件中获取用户的姓名?
【发布时间】:2016-06-10 00:05:06
【问题描述】:

我正在尝试从用户的电子邮件中获取用户的姓名,我们都在同一个业务域中。我看到了一个帖子here,详细说明了如果您想从联系人列表中拉出该怎么做。问题是当我自己尝试时,它知道有我的联系方式,但它会将所有值都返回为 null。如果我使用另一个联系电子邮件,那么它会很好地提取信息。

链接说应该有另一种方法可以做到这一点,但您需要管理员权限。我可以理解,但所有指向用户管理器文档的链接都已损坏。此外,在 Google 的开发者网站上搜索 usermanager 并没有提供任何内容。

var email = Session.getActiveUser().getEmail();
Browser.msgBox(email)

var self = ContactsApp.getContact(email);
var name = self.getFullName();

【问题讨论】:

标签: google-apps-script google-apps


【解决方案1】:

拥有管理员权限,您可以使用directory api。不要忘记在您的 appscript(资源 > 高级 Google 服务)以及开发者控制台中启用管理 API。

function getUserName(email){
var result = AdminDirectory.Users.get(email, {fields:'name'});
var fullname = result.name.fullName;
Logger.log(fullname);
return fullname;
}

【讨论】:

  • 我试过了,即使在 appscript 和开发控制台中启用它后,我仍然得到“无权访问此资源/api”。但更大的问题是,如果我与其他人共享工作表来运行它,他们会收到错误消息,说他们无权访问,我无法授予他们访问权限。这背后的想法是在某人进行更改时用某人的名字更新列表,也许有更简单的方法?
  • 开个玩笑成功了!仅供参考,如果您将 '{viewType:'domain_public'}' 添加到 Users.get() 中,那么它只会搜索公开可用的记录,并且您不需要管理员权限。感谢您的帮助!
  • 是的,'{viewType:'domain_public'}' 有效!谢谢@Trevor!
【解决方案2】:

如果从文本中解析,你可以像下面这样使用,

var email = "john.doe@email.com";
var name   = email.substring(0, email.lastIndexOf("@"));
console.log( name );   // john.doe

希望有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2012-04-03
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多