Partager via


Synchronisation d’Outlook avec un dossier SharePoint

Cet exemple montre comment se connecter par programme Outlook avec un dossier SharePoint et synchroniser les contenus du dossier.

Exemple

Remarque

L’exemple de code suivant est un extrait de Programmation d’Applications pour Microsoft Office Outlook 2007.

Dans Outlook, vous pouvez synchroniser des calendriers, des listes de contacts, des listes de tâches, des forums de discussion ainsi que des bibliothèques de documents vers des dossiers SharePoint. Sur la base de l'URL fournie lors de la synchronisation, Outlook crée un nouveau dossier ayant le même type de base que le dossier SharePoint. Par exemple, la synchronisation avec un dossier de calendrier SharePoint crée un nouveau dossier de calendrier dans Outlook. Les dossiers de synchronisation SharePoint sont stockés dans leur propre fichier de dossiers personnels Outlook (.pst) en dehors de la boîte aux lettres de l'utilisateur. Vous pouvez vous connecter à un dossier SharePoint à l’aide de la OpenSharedFolder (Chaîne, Objet, Objet, Objet) méthode de l’objet d’espace de noms. Notez que vous devez utiliser une URL stssync:// qui fournit des détails sur le serveur SharePoint, le chemin d'accès du dossier et d'autres informations nécessaires à Outlook pour ouvrir un dossier SharePoint.

Lors de la connexion à un dossier SharePoint par programmation, vous devez déterminer l'URL correcte à utiliser pour créer la relation de partage. Étant donné que la stssync : / / URL n’est pas fournie pour le dossier dans l’interface utilisateur SharePoint, associez manuellement le dossier de destination dans Outlook. Utilisez ensuite la première procédure, DisplaySharePointUrl, dans l'exemple de code suivant, pour obtenir l'URL correcte. DisplaySharePointUrl utilise l'Objettableau pour rechercher les informations de liaison de partage dans le dossier actif pour la fenêtre d'explorateur actuelle. Si un ou plusieurs contextes de liaison sont trouvées, les URLs pour tous les contextes partage disponibles apparaissent.

Vous disposez à présent de l’URL appropriée pour créer la relation de partage. Pour synchroniser le nouveau dossier SharePoint dans Outlook, copiez et collez l'URL pour l'affecter à la variable de type chaîne dans la deuxième procédure, AddSpsFolder. AddSpsFolder automatise la synchronisation du nouveau dossier SharePoint dans Outlook à l'aide de la méthode NameSpace.OpenSharedFolderavec unestssync://URL (dans ce cas, l'URL produite par la procédure DisplaySharePointUrl ). AddSpsFolderalso fournit aussi un nom de dossier personnalisé, « Example SPS Calendar » (Exemple de calendrier SPS), et spécifie à Outlook d'utiliser la durée de vie par défaut(TTL) pour le dossier. Les dossiers SharePoint téléchargent toujours les pièces jointes d’élément, afin que vous ne deviez pas à le spécifier ici.

Si vous utilisez Visual Studio pour tester cet exemple de code, vous devez d’abord ajouter une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 et spécifier la variable lorsque vous importez l’espace de noms Microsoft.Office.Interop.Outlook. L’instruction using ne doit pas se produire juste avant les fonctions de l’exemple de code, mais doit être ajoutée avant la déclaration publique. La ligne de code suivante montre comment effectuer l’importation et l’affectation dans C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void DisplaySharePointUrl()
{
    const string PROP_SYNC_URL = 
        "http://schemas.microsoft.com/mapi/id/{00062040-0000-0000-C000-000000000046}/8A24001E";

    Outlook.Folder folder = Application.ActiveExplorer().CurrentFolder as Outlook.Folder;
    Outlook.Table table = folder.GetTable(Type.Missing, Outlook.OlTableContents.olHiddenItems);
    table.Columns.RemoveAll();
    table.Columns.Add("MessageClass");
    table.Columns.Add(PROP_SYNC_URL);

    StringBuilder sb = new StringBuilder();
    while (!table.EndOfTable)
    {
        Outlook.Row row = table.GetNextRow();
        string msgClass, spsUrl;
        msgClass = row["MessageClass"] as string;
        spsUrl = row[PROP_SYNC_URL] as string;

        if (msgClass == "IPM.Sharing.Binding.In")
        {
            sb.Append(spsUrl);
            sb.Append("\r\n");
        }
    }
    if (sb.Length > 0)
    {
        System.Windows.Forms.MessageBox.Show(
            "The following SharePoint Folder URLs were found:\r\n" + sb.ToString());
    }
    else
    {
        System.Windows.Forms.MessageBox.Show("No SharePoint URLs were found in this folder.");
    }
}

private void AddSpsFolder()
{
    string calendarUrl = "stssync://sts/?ver=1.1&type=calendar&cmd=add-folder&base-url=
        https://example.org/calendar&list-url=/Lists/Calendar/calendar.aspx&guid=&site-name=
        Example%20Site&list-name=Calendar";
    string folderName = "Example SPS Calendar";
    bool useDefaultTTL = true;
    Outlook.Folder calendarFolder =
        Application.Session.OpenSharedFolder(calendarUrl, folderName, Type.Missing, useDefaultTTL) 
        as Outlook.Folder;
    Outlook.Explorer exp =
        Application.Explorers.Add(calendarFolder, Outlook.OlFolderDisplayMode.olFolderDisplayNormal);
    exp.Display();
}

Voir aussi