Accéder au contenu principal

SharePoint : Retrouver les items d’un sondage non validés par les utilisateurs

 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” :

image

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é :

image

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, …) :

image

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"

image

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 :

image

Il ne vous reste plus qu’à envoyer le résultat de cette requête au propriétaire du sondage.

Liens Annexes

Romelard Fabrice [MVP]

Commentaires

Posts les plus consultés de ce blog

Redonner vie à une Microsoft Surface RT : le guide ultime vers Linux !

Vous avez une vieille Microsoft Surface RT qui traîne dans un tiroir ? Vous savez, cette tablette de 2012 devenue inutilisable depuis l'abandon officiel de Windows RT par Microsoft ? Ne la jetez surtout pas ! Dans ma dernière vidéo, je vous montre comment transformer cet appareil, autrefois considéré comme un "presse-papier", en une tablette Linux moderne et parfaitement fonctionnelle . Pourquoi ce projet ? L'objectif est simple : transformer ce matériel pour en faire un dashboard dédié à mon système Home Assistant. En installant postmarketOS , une version de Linux spécialement conçue pour les appareils ARM abandonnés, on redonne une seconde jeunesse à cette machine . Ce que vous allez apprendre dans ce tutoriel complet : La libération du matériel : Comment réinstaller la version d'origine pour passer outre les blocages de Windows 8.1 . Jailbreak & Secure Boot : La procédure indispensable pour déverrouiller la machine et permettre l'installation d...

Série de Videos sur Home Assistant intégrant la production Photovoltaïque

 Un certain nombre de vidéos sont en ligne pour intégrer sa production photovoltaïque dans Home Assistant en partant de la base. Installation de Home Assistant: On peut ensuite intégrer les composant des Micro-Onduleurs Enphase, mais aussi les batteries Enphase: Ou encore le composant de contrôle Ecojoko: Ce qui permet alors de faire des comparaisons entre les valeurs capturées: Des videos seront encore publiés dans les prochaines semaines sur différents aspects de cette solution. Fab

Mixer les batteries Enphase et Zendure : La solution ultime pour l'autoconsommation ?

Introduction Vous avez déjà une installation solaire équipée de micro-onduleurs Enphase , mais vous trouvez que le stockage officiel de la marque est trop coûteux ou difficile à installer en DIY ? Vous n'êtes pas seul. Aujourd'hui, je vous partage mon retour d'expérience complet sur une configuration qui intrigue beaucoup de monde : le couplage d'un système Zendure SolarFlow avec un environnement Enphase existant. Pourquoi vouloir mixer ces deux marques ? Le système Enphase est une référence en termes de fiabilité, mais l'ajout de batteries IQ Battery peut représenter un investissement lourd. À l'inverse, Zendure propose avec le SolarFlow une solution de stockage plug-and-play extrêmement flexible et souvent plus abordable. L'idée est simple : utiliser le SolarFlow comme "tampon" entre vos panneaux et vos micro-onduleurs pour stocker l'excédent de la journée et le réinjecter la nuit. Le montage : Est-ce vraiment compliqué ? Dans ma dernière ...