SharePoint userProfileProperties JSOM (объектная модель JavaScript)

Я пытаюсь получить некоторую информацию из функции PeopleManager.getMyProperties(). Я получаю объект, некоторые значения равны нулю. Когда я проверяю его из профиля пользователя в разделе «Управление», я вижу значение. Как я могу исправить это?

Вот мой рабочий код для получения объекта.
Примечание. Я хочу доступ к пользовательскому свойству из профиля пользователя, который я создал ранее. Я вижу свойство в объекте, но значение не приходит.

Спасибо вам всем..

  $(document).ready(function(){         
    SP.SOD.executeOrDelayUntilScriptLoaded(loadUserData, 'SP.UserProfiles.js'); 
  });

  var userProfileProperties;

  function loadUserData(){

    //Get Current Context   
    var clientContext = new SP.ClientContext.get_current();

    //Get Instance of People Manager Class
    var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

    //Get properties of the current user
    userProfileProperties = peopleManager.getMyProperties();

    clientContext.load(userProfileProperties);

    //Execute the Query.
    clientContext.executeQueryAsync(onSuccess, onFail);

  }

  function onSuccess() {        
       console.log(userProfileProperties)    
  }

  function onFail(sender, args) {
       console.log("Error: " + args.get_message());
  } 

person Cem Berk    schedule 15.08.2017    source источник


Ответы (2)


Попробуйте приведенный ниже код и дайте мне знать. Он отлично работает для меня. Я передал имя пользователя вместо Моей учетной записи. Так что вы можете передать любую учетную запись пользователя здесь.

    function getUserProperties(userName) {    
    var clientContext = new SP.ClientContext.get_current();
    var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
    var profilePropertyNames = ["FirstName", "LastName", "CustomProperty"]; //Have to load all the needed properties here
    var targetUser = userName.trim();
    var userProfilePropertiesForUser = new SP.UserProfiles.UserProfilePropertiesForUser(clientContext, targetUser, profilePropertyNames);
    userProfileProperties = peopleManager.getUserProfilePropertiesFor(userProfilePropertiesForUser);    
    clientContext.load(userProfilePropertiesForUser);
    clientContext.executeQueryAsync(onSuccess, onFail);

}

function onSuccess() {    
// userProfileProperties result index is same as the properties loaded above
    var firstName=userProfileProperties[0]; 
    var lastName=userProfileProperties[1];
    var customprop=userProfileProperties[2];
}

Отметьте это как ответ, если это поможет.

person Naveen Prasath    schedule 16.08.2017
comment
Я попробовал код, я получил свойства, но пользовательское свойство по-прежнему равно нулю. Спасибо за совет по имени пользователя и спасибо за помощь. Я поищу, и когда найду, сообщу. @NaveenPrasath - person Cem Berk; 17.08.2017

Я забыл написать решение, извините за это.

Я попробовал код, написанный @NaveenPrasath. Он дает много полей, но не возвращает «Custom Prop Field».

Рабочий код показан ниже.

function getUserProperties(targetUser) {

    var clientContext = new SP.ClientContext.get_current();
    var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
    personProperties = peopleManager.getPropertiesFor(targetUser);
    clientContext.load(personProperties);
    clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

function onRequestSuccess() {
        var fullName = personProperties.get_userProfileProperties()['CustomPropField'];
}
person Cem Berk    schedule 20.09.2017