Partager via


Procédure : Récupérer les propriétés de profil utilisateur à l’aide du modèle objet JavaScript dans SharePoint

Apprenez à récupérer les propriétés utilisateur et les propriétés de profil utilisateur par programmation à l'aide du modèle objet JavaScriptSharePoint.

Que sont les propriétés utilisateur et les propriétés de profil utilisateur dans SharePoint ?

Les propriétés utilisateur et les propriétés de profil utilisateur fournissent des informations sur les utilisateurs de SharePoint, tels que le nom d’affichage, l’adresse électronique, le titre et d’autres informations personnelles et professionnelles. Dans les API côté client, vous pouvez accéder à ces propriétés à partir de l’objet PersonProperties et de la propriété userProfileProperties. La propriété userProfileProperties contient toutes les propriétés de profil utilisateur, tandis que l’objet PersonProperties contient les propriétés couramment utilisées (telles que accountName, displayName et email) qui sont plus faciles d’accès.

L’objet PeopleManager inclut les méthodes suivantes que vous pouvez utiliser pour récupérer les propriétés utilisateur et les propriétés de profil utilisateur à l’aide du modèle objet JavaScript :

Les propriétés de profil utilisateur des API client sont en lecture seule (sauf l’image de profil, que vous pouvez modifier à l’aide de la méthode PeopleManager.setMyProfilePicture). Pour modifier d'autres propriétés de profil utilisateur, vous devez utiliser le modèle objet serveur. Pour plus d'informations sur l'utilisation de profils utilisateur, voir Utiliser des profils utilisateur dans SharePoint.

Remarque

L’objet UserProfile côté client ne contient pas toutes les propriétés utilisateur de la version côté serveur. Cependant, la version côté client fournit les méthodes permettant de créer un site personnel pour l’utilisateur actuel. Pour récupérer cet objet, utilisez la méthode ProfileLoader.getUserProfile.

Conditions préalables à la configuration de votre environnement de développement pour récupérer les propriétés utilisateur à l’aide du modèle objet JavaScript SharePoint

Pour créer une page d’application qui utilise le modèle objet JavaScript afin de récupérer les propriétés utilisateur, vous devez disposer des éléments suivants :

  • SharePoint avec des profils créés pour l’utilisateur actuel et un utilisateur cible

  • Visual Studio 2012

  • Outils de développement Office pour Visual Studio 2013

  • Autorisations de connexion en mode Contrôle total pour accéder à l'application de service de profil utilisateur pour l'utilisateur actuel

Créer la page d'application dans Visual Studio 2012

  1. Sur le serveur exécutant SharePoint, ouvrez Visual Studio et sélectionnez Fichier, Nouveau, puis Projet.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez .NET Framework 4.5 dans la liste déroulante située en haut de la boîte de dialogue.

  3. Dans la liste Modèles, développez Office/SharePoint, sélectionnez la catégorie Solutions SharePoint, puis le modèle Projet SharePoint.

  4. Nommez le projet UserProfilesJSOM, puis cliquez sur le bouton OK.

  5. Dans la boîte de dialogue Assistant Personnalisation de SharePoint, entrez l'URL de votre site SharePoint cible, sélectionnez Déployer en tant que solution de batterie, puis cliquez sur le bouton Terminer.

  6. Dans l' Explorateur de solutions, ouvrez le menu contextuel du projet UserProfilesJSOM, puis ajoutez un dossier mappé « Dispositions » SharePoint.

  7. Dans le dossier Dispositions, ouvrez le menu contextuel du dossier UserProfilesJSOM, puis ajoutez une nouvelle page d’application SharePoint nommée UserProfiles.aspx.

    Remarque : les exemples de code figurant dans cet article définissent le code personnalisé dans les marques de la page, mais n’utilisez pas le fichier de classe code-behind que Visual Studio crée pour la page.

  8. Ouvrez le menu contextuel de la page UserProfiles.aspx, puis sélectionnez Définir comme élément de démarrage.

  9. Dans le balisage de la page UserProfiles.aspx, collez le code suivant dans les balises asp:Content « Main ». Ce code ajoute un contrôle span qui affiche les résultats de la requête, les contrôles SharePoint:ScriptLink qui référencent les fichiers de bibliothèque de classe JavaScript SharePoint et les balises script qui doivent contenir votre logique personnalisée.

<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. Pour ajouter une logique permettant de récupérer les propriétés de profil utilisateur, remplacez le commentaire entre les balises script par l'exemple de code que vous trouverez dans l'un des scénarios suivants :
  1. Pour tester la page d'application, dans la barre de menus, sélectionnez Déboguer, puis Démarrer le débogage. Si vous êtes invité à modifier le fichier web.config, cliquez sur le bouton OK.

Exemple de code : récupérer les propriétés de profil utilisateur à partir de l'objet PersonProperties et de la propriété userProfileProperties dans le modèle objet JavaScriptSharePoint

L’exemple de code suivant montre comment obtenir les propriétés de profil utilisateur pour un utilisateur cible en interrogeant l’objet PersonProperties et la propriété userProfileProperties. Il montre comment :

Remarque

Collez le code suivant entre les balises de script ajoutées au fichier UserProfiles.aspx dans la procédure Créer la page d’application. Remplacez la valeur de l’espace réservé domainName\\userName avant d’exécuter le code. (Cet exemple de code n’utilise pas le fichier 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();
}

Exemple de code : récupérer un jeu de propriétés de profil utilisateur à l’aide de la méthode getUserProfilePropertiesFor dans le modèle objet JavaScript SharePoint

L’exemple de code suivant récupère les valeurs d’un jeu spécifique de propriétés de profil utilisateur pour un utilisateur cible à l’aide de la méthode getUserProfilePropertiesFor. Il montre comment :

  • Créer un objet UserProfilePropertiesForUser qui spécifie l’utilisateur cible et les propriétés de profil utilisateur à récupérer. Cet exemple permet d'obtenir les propriétés PreferredName et Department.

  • Obtenir les valeurs des propriétés spécifiées en utilisant la méthode getUserProfilePropertiesFor et en transmettant l’objet UserProfilePropertiesForUser. (Pour récupérer la valeur d’une seule propriété de profil utilisateur, utilisez la méthode getUserProfilePropertyFor.)

  • Obtenir les valeurs à partir du tableau des valeurs de propriété renvoyé.

Remarque

Collez le code suivant entre les balises de script ajoutées au fichier UserProfiles.aspx dans la procédure Créer la page d’application. Remplacez la valeur de l’espace réservé domainName\\\\userName avant d’exécuter le code. (Cet exemple de code n’utilise pas le fichier 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();
}

Voir aussi