【问题标题】:Google Apps Scripts getFirstName and getGivenName errorGoogle Apps 脚本 getFirstName 和 getGivenName 错误
【发布时间】:2013-02-07 13:47:51
【问题描述】:

我正在使用 Google Apps 脚本尝试使用当前登录的用户的名字和姓氏预先填充字段。根据谷歌的文档,我应该可以通过getGivenName()getFamilyName() 得到这个。当我使用以下代码包含那些时:

  var myFirstName = Session.getEffectiveUser().getGivenName();
  var myLastName = Session.getEffectiveUser().getFamilyName();

我收到以下错误:

TypeError: Cannot find function getGivenName in object
TypeError: Cannot find function getFamilyName in object

另一方面,这段代码有效:

var myEmail = Session.getEffectiveUser().getEmail();
var myUsername = Session.getEffectiveUser().getUsername();

这些功能还没有实现吗?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    您引用的文档是关于 UserManager 的一部分,它是 Domain Service 的一部分,仅适用于域中的 Google Apps 帐户...与 Session.getEffectiveUser() 无关,它是 Base service 的一部分.

    您可以使用自动完成功能来避免这种混淆。

    编辑:信息:如果登录的用户在您的联系人中,那么您可以检索其中的任何内容。 带有 cmets 的示例代码:

    function getUserInfo(){
       var email = Session.getEffectiveUser().getEmail();
       var userName = Session.getEffectiveUser().getUsername();
    Logger.log(email+'  '+userName)
       if(ContactsApp.getContact(email)){ ;// if the logged user is in your contacts
         var fullName = ContactsApp.getContact(email).getFullName();// there a quite a few parameters available from here
         var nickName = ContactsApp.getContact(email).getNickname();// these are just examples
         var tel =  ContactsApp.getContact(email).getPhones();// returns an array of phones object
         var telnums=[]
          for(var t in tel){telnums.push(tel[t].getLabel()+"="+tel[t].getPhoneNumber())} ;// get the numbers ans store in an array
    Logger.log(fullName+' / '+nickName+' / phone :'+telnums.join(' & ')) ;// join the array for proper display
       }
    }
    

    编辑 2:根据您的评论: 对于 GOOGLE 应用帐户,此代码用于获取用户信息,请参阅 doc here,您必须获取 user 对象

    function getUserInfo(){
       var email = Session.getEffectiveUser().getEmail();
       var userName = Session.getEffectiveUser().getUsername();
    Logger.log(email+'  '+userName)
       var user = UserManager.getUser(userName);// get the user object
       var firstName = user.getGivenName();// from there get whatever you want that is available (see autocomplete, not so much possibilities...)
       var familyName = user.getFamilyName();
      Logger.log(firstName+' / '+familyName)
    }
    

    注意:在使用此脚本之前,您必须授权此 API:

    【讨论】:

    • 感谢您的回复!我应该更具体一点,此脚本将在 Google Apps for Education 域中使用。如果 Session.getEffectiveUser() 不是我应该使用的,我可以使用什么来获取当前人员的名字和姓氏运行脚本?
    • 另请参阅关于必须为您的域启用的配置和电子邮件迁移 API 的说明。
    • 还有其他选择,请在此发布新主题,而不是评论。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2015-05-19
    相关资源
    最近更新 更多