Archives mensuelles : mars 2016

Exporter les résultats de recherche de votre site O365 en format CSV avec du CSOM

Introduction

Suite à un changement d’URL de dossier partagé, on m’a demandé de retrouver tous les éléments des listes contenant des références sur l’ancien dossier partagé.

Ex : \\serveurA -> \\serveurB

J’ai donc effectué une requête sur le service de recherche et celle-ci m’a retournée un grand nombre de résultats. De plus, il ne m’était pas possible d’exporter les résultats dans un format convivial.

J’ai donc réalisé une petite application console utilisant le CSOM afin d’exporter les résultats de recherche d’un site O365 en format CSV.

Créer une application console

La solution complète est disponible ici :
telecharger-bouton

Il s’agit d’une application console réalisée à titre d’exemple.

Afin de faire fonctionner l’application :

  • Modifier le URL dans le constructeur ClientContext pour insérer de votre Tenant : https://Tenant.sharepoint.com;
  • Modifier votre terme de recherche <YourSearchTerm> pour spécifier le terme recherché;
  • Modifier le mot de passe <YourPassword> de votre Tenant;
  • Modifier le chemin du fichier CSV <YourPath>;
  • Générez la solution comme normalement.

Description

Cet exemple montre comment utiliser le CSOM pour SharePoint Online. Pour commencer, nous devons d’abord ajouter des références aux assemblages appropriés :

  • Microsoft.SharePoint.Client.dll
  • Microsoft.SharePoint.Client.Runtime.dll
  • Microsoft.SharePoint.Client.Search.dll

 

Ajouter les références suivantes :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; // to enable IO operations
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Search;
using Microsoft.SharePoint.Client.Search.Query;
using System.Security;

 

Ajouter le code suivant dans la fonction main de votre application console afin de cibler votre site O365 :

using (ClientContext clientContext = new ClientContext(&quot;https://Tenant.sharepoint.com&quot;))
{ 

}

Cette section va exécuter la requête sur le service de recherche :

KeywordQuery keywordQuery = new KeywordQuery(clientContext); 

keywordQuery.QueryText = "<YourSearchTerm>"; 

SearchExecutor searchExecutor = new SearchExecutor(clientContext); 

ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);

Cette section permet l’authentification sur votre Tenant O365 :

SecureString securePwd = new SecureString();
String strPassword = "<YourPassword>"; 

foreach (var c in strPassword.ToCharArray()) securePwd.AppendChar(c); 

SharePointOnlineCredentials credentials = new Microsoft.SharePoint.Client.SharePointOnlineCredentials("<User>@<Tenant>.onmicrosoft.com", securePwd);
clientContext.Credentials = credentials;

Cette section permet d’exporter les résultats dans un format CSV :

StringBuilder sb = new StringBuilder(); 

foreach (var resultRow in results.Value[0].ResultRows)
{
sb.AppendLine(string.Join(delimiter, resultRow["Title"], resultRow["Path"], resultRow["Write"]));
} 

System.IO.File.AppendAllText(filePath, sb.ToString());

 

Lancer l’application console et vérifier que le fichier CSV exporté contient les résultats de votre recherche.

Conclusion

On peut facilement obtenir les résultats de recherche et les exporter dans un format convivial en moins de 60 lignes de code. Si vous n’êtes pas chaud à l’idée d’utiliser du code C#, sachez que vous pouvez aussi réaliser un script PowerShell qui fera tout aussi bien le travail.