Skip to content

Instantly share code, notes, and snippets.

@jagedn
Created March 5, 2020 21:28
Show Gist options
  • Save jagedn/94bb66ceca3ec4193793f0787be35003 to your computer and use it in GitHub Desktop.
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
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");
}
<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)" />
&nbsp;
<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