Google Apps脚本getFirstName和getGivenName错误

时间:2013-02-07 13:47:52

标签: google-apps-script

我正在使用Google Apps脚本尝试使用当前登录的用户名和姓前预填充字段。根据Google的文档,我应该可以使用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();

这些功能尚未实施吗?

1 个答案:

答案 0 :(得分:1)

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

您可以使用自动填充功能来避免此类混淆。

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

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:关注您的评论: FOR GOOGLE APPS ACCOUNT ,此代码正在努力获取用户信息,请参阅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:

enter image description here