Permite generar una serie de grupos aleatorios, cuyo número se puede especificar, a partir de un listado de los nombres de los estudiantes. Cambia la lista de estudiantes del modelo por la lista de nombres de tu alumnado, indica el número de grupos en la segunda columna y pulsa el botón "Generar grupos". Tras aceptar los permisos de ejecución de la aplicación, se creará una nueva hoja con los grupos generados aleatoriamente.

 

>>> Acceder a la plantilla modelo <<<

 

 

Código fuente del script

function generateStudentGroups() {
  var spreadsheetActive = SpreadsheetApp.getActiveSpreadsheet();
  var sheetData = SpreadsheetApp.getActiveSheet();
  var dataStudentsList = sheetData.getDataRange().getValues();
  var maxGroups = dataStudentsList[1][1];
  var sheetGroups = spreadsheetActive.insertSheet();
 
  // Store students in a temporal list
  var arrayStudents = [];
  for (var i = 1; i < dataStudentsList.length; i++) {
    if(dataStudentsList[i][0] != "") {
      arrayStudents.push(dataStudentsList[i][0]);
    }
  }
  // Randomize students list
  shuffleArray(arrayStudents);
 
  // Create header for groups and set column width bigger
  for (var i = 0; i < maxGroups; i++) {
    sheetGroups.getRange(1, i+1).setValue("Grupo " + (i+1));
    sheetGroups.getRange(1, i+1).setFontWeight("bold");
    sheetGroups.setColumnWidth(i+1, 300);
  }
 
  var currentGroup = 1;
  var currentRowInGroup = 2;  
  for (var i = 0; i < arrayStudents.length; i++) {
    sheetGroups.getRange(currentRowInGroup, currentGroup).setValue(arrayStudents[i]);
    currentGroup++;
    if(currentGroup > maxGroups) {
      currentRowInGroup++;
      currentGroup = 1;
    }
  }
}
 
/**
 * Randomize array element order in-place.
 * Using Durstenfeld shuffle algorithm.
 */
function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    return array;
}