Un article nommé Compte à rebours avec Google Sheets a suscité une question pour savoir s'il était possible d'avoir un chronomètre dans Google Sheets.
Avec un peu de script, c'est effectivement possible comme le montre cette animation.
Voici une proposition de script qui permet de démarrer le chronomètre, le mettre sur pause et le réinitialiser.
var classeur = SpreadsheetApp.getActiveSpreadsheet();var feuille = classeur.getSheetByName('Chronomètre');
function ajoutSecondes(secondes, minutes, heures){
while (heures <=24){
feuille.getRange(2,1).setValue(heures);
while (minutes <=59){
feuille.getRange(2,2).setValue(minutes);
while (secondes <= 59 ){
var h = feuille.getRange(2,1).getValue()
var m = feuille.getRange(2,2).getValue()
var s = feuille.getRange(2,3).getValue()
if (h === 'pause' || m === 'pause' || s === 'pause'|| h === 'reinit' || m === 'reinit' || s === 'reinit' ) {
return
}
feuille.getRange(2,3).setValue(secondes);
SpreadsheetApp.flush();
Utilities.sleep(1000)
secondes ++
}
secondes = 0;
minutes = feuille.getRange(2,2).getValue();
minutes ++
}
minutes = 0;
heures = feuille.getRange(2,1).getValue();
heures ++
}
}
function demarrageMinuteur(){
var heures = feuille.getRange(2,1).getValue();
var minutes = feuille.getRange(2,2).getValue();
var secondes = feuille.getRange(2,3).getValue();
ajoutSecondes(secondes, minutes, heures);
}
function pause(){
var heures = feuille.getRange(2,1).getValue();
var minutes = feuille.getRange(2,2).getValue();
var secondes = feuille.getRange(2,3).getValue();
feuille.getRange(2,3).setValue('pause');
feuille.getRange(2,3).setValue('pause');
SpreadsheetApp.flush();
Utilities.sleep(1000);
feuille.getRange(2,1).setValue(heures);
feuille.getRange(2,2).setValue(minutes);
feuille.getRange(2,3).setValue(secondes);
}
function reinitialiser(){
feuille.getRange(2,1).setValue('reinit');
feuille.getRange(2,2).setValue('reinit');
feuille.getRange(2,3).setValue('reinit');
SpreadsheetApp.flush();
Utilities.sleep(1000);
feuille.getRange(2,1).setValue(0);
feuille.getRange(2,2).setValue(0);
feuille.getRange(2,3).setValue(0);
}