SharePoint permet de créer des sondages simples, qui parfois peuvent s’afficher sur plusieurs pages. Dans ce cadre la, l’affichage du formulaire propose un bouton “Save” :
Le fait est que de nombreux utilisateurs ne passent pas sur la page suivante et cliquent sur “Save” en pensant valider ce formulaire.
Malheureusement, ce n’est pas le cas en interne, car la réponse est sauvegardée en base mais avec un status “Checked out” proche de celui des fichier Published/Checked Out.
D’ailleurs certains codes existent pour supprimer entèrement ce bouton, mais la n’est pas le sujet :
Un des effets visibles pour le créateur du sondage est la différence entre le nombre d’items visible dans les résultats et le nombre d’items dans la page de résumé :
Mais aussi, par le manque de certains numéros dans la suite des items des résultats (dans l’exemple, il manque le 1, le 11 & 12, …) :
De ce fait, le propriétaire du sondage veut pouvoir fermer ce sondage avec tous les résultats et souhaite pouvoir relancer uniquement ceux qui sont dans le cas “stand-by”. Il existe d’ailleurs une KB sur ce point qui ne fournit aucune solution.
Obtenir les informations en cours
Pour cela, il faut aller dans les bases de SharePoint, car il n’y a pas de moyen simple pour effectuer cela (pour des raisons évidentes de confidentialités). Il n’y a pas de possibilité de trouver ces informations directement via code/PowerShell.
En revanche, il nous faut connaître la base de données dans laquelle la collection se situe ainsi que l’ID (GUID) de la liste en question, sachant que nous avons l’URL et le nom de la liste. Pour le nom de la Base, on peut aller dans l’interface d’administration, mais le plus simple pour avoir les deux informations est de partir d’un petit script PowerShell :
function Get-AllSurveyItemOwners([string]$SurveyURL, [string]$SurveyName)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Administration") > $null$site = new-object Microsoft.SharePoint.SPSite($SurveyURL)
Write-Host "SiteURL:", $SurveyURL$DBName = [Microsoft.SharePoint.Administration.SPContentDatabase].GetProperty("Name")
$MyContentDatabase = $site.ContentDatabase
Write-Host " ------------------------------ "
$CurrentDBName = $DBName.GetValue($MyContentDatabase, $null)
Write-Host " ---> ContentDB:", $CurrentDBName
$web = $site.OpenWeb()Write-Host " ------------------------------ "
$SurveyList = $web.Lists[$SurveyName];
Write-Host " ---> Survey ListID:", $SurveyList.Id
Write-Host " ------------------------------ "
$web.Dispose()
$site.Dispose()
}cls
Get-AllSurveyItemOwners “http://MyWebApp/sites/mysitecoll/lists/mysurvey” "MySurveyName"
Ainsi, nous avons à ce stade la base en question et le GUID de la liste Survey en question, il nous faut aller directement sur le serveur de bases de données et exécuter la requête :
USE [MyContentDB]
SELECT
usrinf.tp_Login AS UsrLogin,
usrinf.tp_Email AS UsrEmail,
AllData.tp_Modified AS LastModified,
AllData.tp_ID AS IDItem
FROM
dbo.AllUserData AllData
INNER JOIN dbo.UserInfo usrinf
ON AllData.tp_Author = usrinf.tp_ID
AND AllData.tp_SiteID = usrinf.tp_SiteID
WHERE
(tp_ListId = 'myGUID-myGUID-xxxxXXXX-XXXX)
AND
(NOT tp_CheckoutUserId IS NULL)
Vous obtiendrez alors en résultat les informations nécessaires pour contacter les utilisateurs :
Il ne vous reste plus qu’à envoyer le résultat de cette requête au propriétaire du sondage.
Liens Annexes
- Sharepoint Survey shows more number of surveys than the actual present in survey list
- Showing the unfinished survey results in SharePoint
- Survey - Show Incomplete Results
- Getting (and taking ownership of) Checked Out Files using Windows PowerShell
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire