cancel
Showing results for 
Search instead for 
Did you mean: 

Informe o fichero con la estructura grupo/usuarios

nicecons
Confirmed Champ
Confirmed Champ

Estimados:

Alguno sabe si hay algún punto de los menús o algún script ya hecho que permita obtener la estructura completa de grupos con los usuarios que pertenecen a esos grupos (solo tengo dos niveles, no hay grupos asignados a grupos).

Sería algo así como:

Grupo1

      Usuario 1

      Usuario 2

      Usuario n

Grupo2

      Usuario 3

      Usuario 4

      Usuario n

Si además a continuación del usuario se pudiera poner el e-mail ya sería perfecto.

Muchas gracias, un cordial saludo.

7 REPLIES 7

angelborroy
Community Manager Community Manager
Community Manager
var groups = groups.getAllRootGroups();

for each (var group in groups) {
     
  logger.log("GROUP: " + group.getShortName());
     
  var node = people.getGroup("GROUP_" + group.getShortName());
  var members = people.getMembers(node);

  for (var i=0; i < members.length; i++) {
       logger.log("Member: " + members[i].properties["cm:userName"] +
                     ", " + members[i].properties["cm:email"]);
  }
 
  var subGroups = group.getAllGroups();
 
  for each (var subGroup in subGroups) {
    logger.log("SUBGROUP: " + subGroup.getShortName());
      
    var node = people.getGroup("GROUP_" + subGroup.getShortName());
    var members = people.getMembers(node);

    for (var i=0; i < members.length; i++) {
         logger.log("Member: " + members[i].properties["cm:userName"] +
                     ", " + members[i].properties["cm:email"]);
    }
      
  }

}
Hyland Developer Evangelist

Muchas gracias Ángel.

Por favor, ¿podrías decirme cual es el directorio/fichero donde lo deja?

Un cordial saludo.

En el ejemplo anterior, la salida se escribe al log del sistema.

A continuación un ejemplo que lo escribe en "Shared/lista-usuarios.txt"

var sharedFolder = companyhome.childByNamePath("/Shared");
var file = sharedFolder.createFile("lista-usuarios.txt");

var content = "";
                                   
var groups = groups.getAllRootGroups();

for each (var group in groups) {
     
  content = content + "GROUP: " + group.getShortName() + "\n";
     
  var node = people.getGroup("GROUP_" + group.getShortName());
  var members = people.getMembers(node);

  for (var i=0; i < members.length; i++) {
       content = content + "Member: " + members[i].properties["cm:userName"] +
                     ", " + members[i].properties["cm:email"] + "\n";
  }
 
  var subGroups = group.getAllGroups();
 
  for each (var subGroup in subGroups) {
    content = content + "SUBGROUP: " + subGroup.getShortName() + "\n";
      
    var node = people.getGroup("GROUP_" + subGroup.getShortName());
    var members = people.getMembers(node);

    for (var i=0; i < members.length; i++) {
         content = content + "Member: " + members[i].properties["cm:userName"] +
                     ", " + members[i].properties["cm:email"] + "\n";
    }
      
  }
     
  file.content = content;
  file.save();

}
Hyland Developer Evangelist

Hola Ángel:

Esta opción parece mucho mejor.

Cuando la ejecuto me responde con un error como que no puede ejecutar el método createFile para null.

Supongo que es por 

sharedFolder = companyhome.childByNamePath("/Shared");

Como en esto "toco de oído" tengo dos dudas:

1. ¿companyhome es C:alfresco-community (el directorio donde lo instalé)?

2. En tu respuesta anterior dices que lo escribe en el log del sistema ¿cómo se llama el fichero? ¿dónde está?

Otra vez muchísimas gracias por tu ayuda.

Un saludo.

Cambia “Shared” por “Compartido”

Hyland Developer Evangelist

Buenos días Ángel:

Con el cambio a "Compartido" lo ejecuta sin problemas, pero no encuentro el fichero ·lista-usuarios.txt en el disco.

Tendría que estar, porque si intento volver a ejecutarlo da el error "fichero lista-usuarios.txt ya existe".

¿Tienes alguna idea al respecto?

Desde ya muchísimas gracias por tu ayuda.

Dale al botón Compartido de la barra negra superior de Share. Ahí está el archivo.

Hyland Developer Evangelist