lunes, 27 de enero de 2014

¿Cómo retornar los usuarios de todos los grupos de un sitio con Client Object Model en SharePoint 2010?

Les dejo este script que permite retornar todos los usuarios de todos los grupos de un sitio. Incluye algunos detalles como:
  • Máximo de grupos
  • Grupos que comienzan con un prefijo
  • Formato HTML
Está basado en el siguiente artículo de MSDN que les recomiendo: http://msdn.microsoft.com/en-us/library/office/hh185012(v=office.14).aspx
 
Código:
 
<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(retrieveAllUsersAllGroups, "sp.js");
function retrieveAllUsersAllGroups() {
    var clientContext = new SP.ClientContext.get_current();
    this.collGroup = clientContext.get_web().get_siteGroups();
    clientContext.load(collGroup, 'Include(Title,Id,Users.Include(Title,LoginName))');

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
    this.userInfo = '<style>.mitabla td {border: solid blue 1px;}</style><table class="mitabla"><tr><td>Grupo<td>Usuario</td><td>Cuenta</td></tr>';
    // Top de Grupos
    var primeros = 500;
    var i = 1;
    var groupEnumerator = collGroup.getEnumerator();
    while (groupEnumerator.moveNext() && i <= primeros ) {
 i += 1;
        var oGroup = groupEnumerator.get_current();
        var collUser = oGroup.get_users();
        var userEnumerator = collUser.getEnumerator();
        while (userEnumerator.moveNext()) {
            var oUser = userEnumerator.get_current();
    
     // Condición de prefijo de nombre de grupo
     if ( oGroup.get_title().substr(0,2) == "AF" ) {
             this.userInfo += '<tr><td>' + oGroup.get_title() + '</td><td>' + oUser.get_title() + '</td><td>' + oUser.get_loginName() + '</td></tr>';
  }

        }
    }
       
    this.userInfo += '</table>';
    document.write(this.userInfo);
}
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
</script>

0 comentarios:

Publicar un comentario en la entrada