2013-02-07 4 views
1

Я работаю в Google Apps Script, пытаясь предварительно заполнить поле с именами и именами пользователей, которые в настоящее время вошли в систему. Согласно документации Google, я должен получить это с помощью getGivenName() и getFamilyName(). Когда я включаю те, используя следующий код:Скрипты Google Apps getFirstName и getGivenName error

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

Док вы ссылаетесь о UserManager, который является частью Domain Service доступны только с учетной записью Google Apps в домене ... ничего общего с Session.getEffectiveUser(), который является частью Base service.

Вы можете использовать функцию автозаполнения, чтобы избежать такой путаницы.

EDIT: для информации: если зарегистрированный пользователь в ваших контактах, вы можете получить все, что там есть. Пример кода с комментариями:

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 
    } 
} 

EDIT 2: следующий комментарий: ДЛЯ GOOGLE APPS СЧЕТ, этот код работает, чтобы получить информацию о пользователе, см 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

+0

Спасибо за ответ! Я должен был быть более конкретным, этот скрипт будет использоваться в домене Google Apps для образования. Если Session.getEffectiveUser() не то, что я должен использовать, что я могу использовать для получения первого и последнего имени человека в настоящее время запуск сценария? – anielsen

+0

ОК, извините за путаницу, см. Править 2, пожалуйста. –

+0

см. Также примечание по настройке и API миграции электронной почты, который должен быть включен для вашего домена. –

Смежные вопросы