Created
March 5, 2020 21:29
-
-
Save jagedn/6e91b9a0584115e75b25ab17efb4f1c2 to your computer and use it in GitHub Desktop.
Utilidad de Google Sheet para sortear entre los alumnos de una clase quién le toca salir a la pizarra a resolver un ejercicio
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function onOpen(e) { | |
var ui = SpreadsheetApp.getUi(); | |
ui.createAddonMenu().addItem('RandomAula', 'raffle').addToUi(); | |
} | |
var urls = [ | |
"https://media.giphy.com/media/3oriffRGkX9U7Tmphu/giphy.gif", | |
"https://media.giphy.com/media/3HGDE05UoQ0tmQpTzz/giphy.gif", | |
"https://media.giphy.com/media/THVQ8w1Yc2Eg8aUU0S/giphy.gif", | |
"https://media.giphy.com/media/euGKUsOE7FWMxIjmf9/giphy.gif" | |
] | |
function getRemains(){ | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = ss.getActiveSheet(); | |
var ret = []; | |
// Alumnos y el estado en A3D99 | |
var range = ss.getRange("A3:D"+ss.getLastRow()).getValues(); | |
for(var i=0; i<range.length; i++){ | |
var row = range[i]; | |
// una celda en blanco indica fin de alumnos | |
if( !row[0] ){ | |
break | |
} | |
// una celda en blanco indica que no ha salido todavia | |
if( !row[1] ){ | |
ret.push( [i,row[0],row[1]] ) | |
} | |
} | |
return ret; | |
} | |
function getExercises(){ | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = ss.getActiveSheet(); | |
var ret = []; | |
// Ejercicios en columna E | |
var range = ss.getRange("E3:E"+ss.getLastRow()).getValues(); | |
for(var i=0; i<range.length; i++){ | |
var row = range[i]; | |
if( !row[0] ){ | |
break | |
} | |
ret.push( row[0] ) | |
} | |
return ret; | |
} | |
// Ordenar random alumnos y elegir uno | |
function raffle( ){ | |
var remains = getRemains(); | |
var suertudoIndex = Math.floor(Math.random()*remains.length); | |
var suertudo = remains[suertudoIndex]; | |
var exercises = getExercises() | |
var exercise = Math.floor(Math.random()*exercises.length); | |
var urlIndex = Math.floor(Math.random()*urls.length); | |
var url = urls[urlIndex]; | |
var template = HtmlService.createTemplateFromFile('Dialog'); | |
template.suertudo = suertudo; | |
template.exercise = exercise; | |
template.meme = url; | |
template.exerciseStr = exercises[exercise]; | |
var html = template.evaluate(); | |
var htmlOutput = HtmlService | |
.createHtmlOutput(html) | |
.setWidth(800) | |
.setHeight(600); | |
SpreadsheetApp.getUi().showModalDialog(htmlOutput, suertudo[1]); | |
} | |
// Invocado por el dialogo cuando el alumno index ha salido a la pizarra | |
function yepes(suertudoIndex, exercise){ | |
suertudoIndex = parseInt(suertudoIndex); | |
var exercises = getExercises() | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = ss.getActiveSheet(); | |
sheet.getRange(suertudoIndex+3,2).setValue(new Date()); | |
sheet.getRange(suertudoIndex+3,3).setValue(exercises[exercise]); | |
} | |
// Invocado por el dialogo cuando el alumno index no ha venido a clase | |
function notPresent(suertudoIndex){ | |
suertudoIndex = parseInt(suertudoIndex); | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = ss.getActiveSheet(); | |
sheet.getRange(suertudoIndex+3,2).setValue(new Date()); | |
sheet.getRange(suertudoIndex+3,3).setValue("AUSENTE. ELIMINAR CELDAS B Y C CUANDO VUELVA"); | |
} | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script> | |
var suertudoIdx = <?=suertudo[0]?>; | |
var exercise = '<?=exercise?>'; | |
function yepes(){ | |
google.script.run.withSuccessHandler(google.script.host.close).yepes(suertudoIdx,exercise) | |
} | |
function notPresent(){ | |
google.script.run.withSuccessHandler(google.script.host.close).notPresent(suertudoIdx) | |
} | |
</script> | |
<h1> | |
<?=exerciseStr?> | |
</h1> | |
<center> | |
<image src="<?=meme?>"/> | |
</center> | |
<p> | |
<div> | |
<input type="button" value="Hecho" onclick="yepes(suertudoIdx,exercise)" /> | |
| |
<input type="button" value="No Presente" onclick="notPresent()" /> | |
</div> | |
</p> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Instrucciones
En una hoja Google Sheet en blanco rellenala con los datos como los de la imagen. Respeta las columnas
Las preguntas pueden ser tantas como se desee o una sólo. El sistema elegirá una aleatoria de entre ellas
Debería aparecer un menú nuevo en "Complementos" llamando "Random Aula" con una opción de submenú.
Seleccionalo y deberá aparecer un Diálogo con el nombre de un alumno elegido al azar junto con el ejercicio que le toca.
Si el alumno sale a la pizarra pulsa "Hecho", si no sale (ausencia, verguenza, ...) marca "No presente" y el sistema le anotará para que no vuelva a salir en la siguiente ronda.