Recuperar propriedades de perfil de usuário usando o modelo de objeto JavaScript no SharePoint

Saiba como recuperar as propriedades de usuário e propriedades de perfil de usuário, via programação, usando o modelo de objeto JavaScript do SharePoint.

Quais são as propriedades de usuário e propriedades de perfil de usuário no SharePoint?

Propriedades de usuário e propriedades de perfil de usuário fornecem informações sobre os usuários do SharePoint, como o nome para exibição, email, cargo e comerciais e informações pessoais. Nas APIs do lado do cliente, pode aceder a estas propriedades a partir do objeto PersonProperties e da respetiva propriedade userProfileProperties . A propriedade userProfileProperties contém todas as propriedades do perfil de utilizador, mas o objeto PersonProperties contém propriedades frequentemente utilizadas (como accountName, displayName e e-mail) que são mais fáceis de aceder.

O objeto PeopleManager inclui os seguintes métodos que pode utilizar para obter as propriedades do utilizador e as propriedades do perfil de utilizador com o modelo de objeto JavaScript:

As propriedades do perfil de utilizador das APIs cliente são só de leitura (exceto a imagem de perfil, que pode alterar com o método PeopleManager.setMyProfilePicture ). If you want to change other user profile properties, you must use the server object model. Para saber mais sobre como trabalhar com perfis de usuário, confira Trabalhar com perfis de usuário no SharePoint.

Observação

O objeto UserProfile do lado do cliente não contém todas as propriedades do utilizador como a versão do lado do servidor. No entanto, a versão do cliente fornecem os métodos de criação de um site pessoal do usuário atual. Para recuperar a ele, use o método ProfileLoader.getUserProfile .

Pré-requisitos para configurar seu ambiente de desenvolvimento para recuperar as propriedades de usuário usando o modelo de objeto de JavaScript do SharePoint

Para criar uma página de aplicativo que utiliza o modelo de objeto do JavaScript para recuperar as propriedades de usuário, você precisará de:

  • SharePoint com perfis criados para o usuário atual e um usuário de destino
  • Visual Studio 2022
  • Ferramentas de Programador do Office para Visual Studio 2022
  • Permissões de conexão de Controle total para acessar o perfil de usuário do serviço de aplicativo para o usuário atual

Criar a página da aplicação no Visual Studio

  1. No servidor executando o SharePoint, abra o Visual Studio e escolha Arquivo, NovoProjeto. . In the **New Project** dialog box, choose **.NET Framework 4.5** from the drop-down list at the top of the dialog box. . Na lista de Modelos, expanda oOffice/SharePoint, escolha a categoria de Soluções do SharePoint e, em seguida, escolha o modelo de Projeto do SharePoint . . Name the project UserProfilesJSOM, and then choose the **OK** button. . Na caixa de diálogo Assistente de personalização do SharePoint, digite a URL de seu site do SharePoint de destino, selecione implantar como uma solução de farm e escolha o botão Concluir. . In **Gerenciador de Soluções**, open the shortcut menu for the UserProfilesJSOM project, and then add a SharePoint "Layouts" mapped folder. . Na pasta Layouts, abra o menu de atalho para a pasta UserProfilesJSOM e, em seguida, adicione uma nova página de aplicativos do SharePoint denominadaUserProfiles.aspx.

    Observação

    Os exemplos de código neste artigo definem código personalizado na marcação de página, mas não utilizam o ficheiro de classe code-behind que o Visual Studio cria para a página.

  2. Abra o menu de atalho para a página UserProfiles.aspx e escolha definida como Item de inicialização.

  3. Na marcação para a página UserProfiles.aspx, cole o seguinte código dentro das marcas de asp:Content "Main". Este código adiciona um controle de span que exibe os resultados da consulta, os controles de SharePoint:ScriptLink que fazem referência a arquivos da biblioteca de classe do SharePoint JavaScript e marcas de script para conter a lógica personalizada.

<span id="results"></span><br />
<SharePoint:ScriptLink ID="ScriptLink1"
                       name="SP.js"
                       runat="server"
                       ondemand="false"
                       localizable="false"
                       loadafterui="true" />
<SharePoint:ScriptLink ID="ScriptLink2"
                       name="SP.UserProfiles.js"
                       runat="server"
                       ondemand="false"
                       localizable="false"
                       loadafterui="true" />
<script type="text/javascript">
  // Replace this comment with the code for your scenario.
</script>
  1. Para adicionar lógica para recuperar as propriedades de perfil de usuário, substitua o comentário entre as marcas de script com o exemplo de código de um dos seguintes cenários:

  2. Para testar a página de aplicativo, na barra de menus, escolha Depurar, Iniciar Depuração. Se lhe for pedido para modificar o ficheiro web.config, selecione o botão OK .

Exemplo de código: recuperar as propriedades de perfil de usuário do objeto PersonProperties e sua propriedade userProfileProperties no modelo de objeto de JavaScript do SharePoint

O exemplo de código seguinte mostra como obter propriedades de perfil de utilizador para um utilizador de destino ao consultar o objeto PersonProperties e a respetiva propriedade userProfileProperties . Ele mostra como:

Observação

[!OBSERVAçãO] Cole o seguinte código entre as marcas de script que você adicionou no arquivo UserProfiles.aspx no procedimento criar a página do aplicativo . Substitua o valor de espaço reservado de domainName\\userName antes de executar o código. (Este exemplo de código não utiliza o ficheiro de classe code-behind.)

var personProperties;

// Ensure that the SP.UserProfiles.js file is loaded before the custom code runs.
SP.SOD.executeOrDelayUntilScriptLoaded(getUserProperties, 'SP.UserProfiles.js');

function getUserProperties() {

  // Replace the placeholder value with the target user's credentials.
  var targetUser = "domainName\\userName";

  // Get the current client context and PeopleManager instance.
  var clientContext = new SP.ClientContext.get_current();
  var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

  // Get user properties for the target user.
  // To get the PersonProperties object for the current user, use the
  // getMyProperties method.
  personProperties = peopleManager.getPropertiesFor(targetUser);

  // Load the PersonProperties object and send the request.
  clientContext.load(personProperties);
  clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

// This function runs if the executeQueryAsync call succeeds.
function onRequestSuccess() {

  // Get a property directly from the PersonProperties object.
  var messageText = " \\"DisplayName\\" property is " + personProperties.get_displayName();

  // Get a property from the UserProfileProperties property.
  messageText += "<br />\\"Department\\" property is " + personProperties.get_userProfileProperties()['Department'];
  $get("results").innerHTML = messageText;
}

// This function runs if the executeQueryAsync call fails.
function onRequestFail(sender, args) {
  $get("results").innerHTML = "Error: " + args.get_message();
}

Exemplo de código: recuperar um conjunto de propriedades de perfil de usuário usando o método getUserProfilePropertiesFor no modelo de objeto de JavaScript do SharePoint

O seguinte exemplo de código obtém os valores de um conjunto especificado de propriedades de perfil de utilizador para um utilizador de destino com o método getUserProfilePropertiesFor . Ele mostra como:

Observação

[!OBSERVAçãO] Cole o seguinte código entre as marcas de script que você adicionou no arquivo UserProfiles.aspx no procedimento criar a página do aplicativo . Substitua o valor de espaço reservado de domainName\\\\userName antes de executar o código. (Este exemplo de código não utiliza o ficheiro de classe code-behind.)

var userProfileProperties;

// Ensure that the SP.UserProfiles.js file is loaded before the custom code runs.
SP.SOD.executeOrDelayUntilScriptLoaded(getUserProperties, 'SP.UserProfiles.js');

function getUserProperties() {
  // Replace the placeholder value with the target user's credentials.
  var targetUser = "domainName\\\\userName";

  // Get the current client context and PeopleManager instance.
  var clientContext = new SP.ClientContext.get_current();
  var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

  // Specify the properties to retrieve and target user for the
  // UserProfilePropertiesForUser object.
  var profilePropertyNames = ["PreferredName", "Department"];
  var userProfilePropertiesForUser =
      new SP.UserProfiles.UserProfilePropertiesForUser(
          clientContext,
          targetUser,
          profilePropertyNames);

  // Get user profile properties for the target user.
  // To get the value for only one user profile property, use the
  // getUserProfilePropertyFor method.
  userProfileProperties = peopleManager.getUserProfilePropertiesFor(userProfilePropertiesForUser);

  // Load the UserProfilePropertiesForUser object and send the request.
  clientContext.load(userProfilePropertiesForUser);
  clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

// This function runs if the executeQueryAsync call succeeds.
function onRequestSuccess() {
  var messageText = "\\"PreferredName\\" property is " + userProfileProperties[0];
  messageText += "<br />\\"Department\\" property is " + userProfileProperties[1];
  $get("results").innerHTML = messageText;
}

// This function runs if the executeQueryAsync call fails.
function onRequestFail(sender, args) {
  $get("results").innerHTML = "Error: " + args.get_message();
}

Confira também