Created
March 5, 2020 21:28
-
-
Save jagedn/94bb66ceca3ec4193793f0787be35003 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