Google apps script Google应用程序脚本getFirstName和getGivenName错误

Google apps script Google应用程序脚本getFirstName和getGivenName错误,google-apps-script,Google Apps Script,我正在谷歌应用程序脚本中工作,试图用当前登录用户的名字和姓氏预先填充一个字段。根据谷歌的文档,我应该能够得到这个和。当我包含使用以下代码的代码时: var myFirstName = Session.getEffectiveUser().getGivenName(); var myLastName = Session.getEffectiveUser().getFamilyName(); 我得到以下错误: TypeError: Cannot find function getGiven

我正在谷歌应用程序脚本中工作,试图用当前登录用户的名字和姓氏预先填充一个字段。根据谷歌的文档,我应该能够得到这个和。当我包含使用以下代码的代码时:

  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();

这些功能还没有实现吗?

您提到的文档是关于
UserManager
的,它是
域服务的一部分
仅在域中的Google Apps帐户可用。。。与会话的一部分
Session.getEffectiveUser()
无关

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

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

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 APPS帐户,此代码用于获取用户信息,请参见,您必须获取
用户
对象

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教育应用程序域中使用。如果Session.getEffectiveUser()不是我应该使用的,我可以使用什么来获取当前运行脚本的人的名字和姓氏?另请参阅必须为您的域启用的设置和电子邮件迁移API的说明。还有其他方法,请在此发布新的线程,而不是发表评论。谢谢