[Google Sheets] Réviser son vocabulaire - Système Leitner/Anki
Bonjour,
A la suite de cette demande sur excel https://forum.excel-pratique.com/excel/macro-pour-stimuler-sa-memoire-systeme-leitner-anki-152447, j'ai retranscrit la possibilité sur GSheets.
Voici le lien : https://docs.google.com/spreadsheets/d/1H0NWYsqXt8Ewz0bOlZnsaZmkE317WzL3FQEBL5OximY/edit?usp=sharing
2 possibilités :
- mot à mot proposé par le programme
- sur une liste permettant de choisir l'ordre de réponse, et solder les mots déjà connus pour avancer
J'ai laissé la liste du vocabulaire ouverte afin de pouvoir accéder à une aide.
Le script gère les 2 configurations
function onEdit(e){
var d = SpreadsheetApp.getActiveSpreadsheet(); // document
var f = e.source.getActiveSheet(); // feuille
var r = e.source.getActiveRange(); // range
var liste = d.getSheetByName('vocabulaire');
if ((r.getValue() != '') && (r.getA1Notation() == 'B4') && (f.getName() == 'mot à mot') ){
var i = r.offset(-3,0).getValue(); // indice
var n = r.offset(-2,0).getValue(); // niveau
var t = r.offset(1,0).getValue(); // test
var s = liste.getRange('E' + i).getValue(); // side
liste.getRange('E' + i).setValue((s=='Verso')?'Recto':'Verso');
liste.getRange('F' + i).setValue(new Date());
liste.getRange('B' + i).setValue(t?n+=1:1);
r.setValue('')
r.activate()
Browser.msgBox((t?'👍':'👎 '+liste.getRange('C'+i).getValue()+' : '+liste.getRange('D'+i).getValue()));
}
if ((r.getValue() != '') && (r.getColumn() == 4) && (f.getName() == 'sur liste') ){
var i = r.offset(0,-3).getValue(); // indice
var n = r.offset(0,-2).getValue(); // niveau
var t = r.offset(0,1).getValue(); // test
var s = liste.getRange('E' + i).getValue(); // side
liste.getRange('E' + i).setValue((s=='Verso')?'Recto':'Verso');
liste.getRange('F' + i).setValue(new Date());
liste.getRange('B' + i).setValue(t?n+=1:1);
r.setValue('')
r.activate()
Browser.msgBox((t?'👍':'👎 '+liste.getRange('C'+i).getValue()+' : '+liste.getRange('D'+i).getValue()));
}
}
Des formules permettent d'établir le programme et de valider les propositions ;
=query(vocabulaire!A1:G;"select * where (G) <= DATE'" & TEXT('niveaux/jours'!$A$1;"yyyy-MM-dd") & "' and ( (B)="&'niveaux/jours'!$C$1&" or (B)="&'niveaux/jours'!$D$1&" or (B)="&'niveaux/jours'!$E$1&" ) and (B) < 8 ORDER BY (B) DESC ";0)
={"Résultat";arrayformula(if(D3:D="";"";regexreplace(UPPER(if(programme!E1:E="Recto";programme!D1:D;programme!C1:C));"[^[:alpha:]]";"")=regexreplace(UPPER(D3:D);"[^[:alpha:]]";"")))}