Actualiser seconde par seconde

Bonjour à tous.

Je souhaite savoir si il est possible d'actualiser seconde par seconde un document sheets.

Merci de votre aide

Je vous joins en lecture mon fichier sheets :

https://docs.google.com/spreadsheets/d/103usb_h_fwCMQwpcPaR0HZ1UZUKlIJd_P9sHj_m19As/edit?usp=sharing

Je ne sais pas s'il est possible de descendre à la seconde.

Déjà dans fichier - paramètres de la feuille de calcul - onglet calcul

En cliquant sur nouveau calcul "après une modification et toutes les minutes" le compte à rebours sera mis à jour automatiquement chaque minute.

Peut-être qu'un script permet d'actualiser de façon plus régulière mais j'ai un doute pour descendre à la seconde

Bonjour,

proposition :

  • mettre en B1 la date actualisée
  • baser le calcul savant que tu fais sur cette valeur B1 au lieu de now()
  • faire un script et le lancer, il fonctionnera jusqu'à fermeture du fichier :
function actualiser() {
  var f = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  while (true){
    f.getRange('B1').setValue(new Date())
    SpreadsheetApp.flush(); 
    Utilities.sleep(1000);
  }
}

Gilbert m'avertit qu'en effet le script aune durée limitée chez Goggle (pas comme html)

Du coup, il faut peut-être afficher le décompte dans une sidebar ...

Bonjour,

Avec une boite de dialogue

cr.html

<!DOCTYPE html>
<html>
<head>
<style>
        body{ margin:0;overflow: hidden;font-family:Arial}
        .box-rebours{ height: 100vh; display: flex; justify-content: center; align-items: center; text-align: center; }
        .box_jour, .box_heure, .box_minute, .box_seconde { padding: 10px; }
        #jour, #heure, #minute, #seconde { background:black; padding: 10px 20px; color: white; font-size: 3rem; font-weight: bold; }
        #jour_label, #heure_label, #minute_label, #seconde_label { font-size: 1.5rem; }
</style>
</head>
<body>
<h1>Compte à Rebours</h1>
<div class="box-rebours">       
        <div class="box_jour">
            <div id="jour">00</div>
            <span id="jour_label">Jours</span>
        </div>
        <div class="box_heure">
            <div id="heure">00</div>
            <span id="heure_label">Heures</span>
        </div>
        <div class="box_minute">
            <div id="minute">00</div>
            <span id="minute_label">Minutes</span>
        </div>
        <div class="box_seconde">
            <div id="seconde">00</div>
            <span id="seconde_label">Secondes</span>
        </div>
    </div>
<script>
function reboursF(){
                let rebours = document.getElementById("rebours"),
                jour = document.getElementById("jour"),
                jour_label = document.getElementById("jour_label"),
                heure = document.getElementById("heure"),
                heure_label = document.getElementById("heure_label"),
                minute = document.getElementById("minute"),
                minute_label = document.getElementById("minute_label"),
                seconde = document.getElementById("seconde"),
                seconde_label = document.getElementById("seconde_label"),
                maintenant = new Date(),
                finannee = new Date('August 31, '+new Date().getFullYear()+' 00:00:00');

                let total_secondes = (finannee - maintenant) / 1000;

            if (total_secondes > 0){
                let nb_jours = Math.floor(total_secondes / (60 * 60 * 24));
                let nb_heures = Math.floor((total_secondes - (nb_jours * 60 * 60 * 24)) / (60 * 60));
                let nb_minutes = Math.floor((total_secondes - ((nb_jours * 60 * 60 * 24 + nb_heures * 60 * 60))) / 60);
                let nb_secondes = Math.floor(total_secondes - ((nb_jours * 60 * 60 * 24 + nb_heures * 60 * 60 + nb_minutes * 60)));

                jour.textContent = caractere(nb_jours);
                heure.textContent = caractere(nb_heures);
                minute.textContent = caractere(nb_minutes);
                seconde.textContent = caractere(nb_secondes);

                jour_label.textContent = genre(nb_jours, 'jour');
                heure_label.textContent = genre(nb_heures, 'heure');
                minute_label.textContent = genre(nb_minutes, 'minute');
                seconde_label.textContent = genre(nb_secondes, 'seconde');        
            }

            setTimeout("reboursF();", 1000);
        }

        function genre(nb, libelle)
        {
            return (nb > 1) ? libelle+'s' : libelle;
        }

        function caractere(nb)
        {
            return (nb < 10) ? '0'+nb : nb;
        }

        reboursF();
</script>
</body>
</html>

Code.gs

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('** Compte à Rebours **')
    .addItem('Compte à Rebours', 'car')
    .addToUi();
}

function car() {
  const html = HtmlService
    .createTemplateFromFile('cr')
    .evaluate()
    .setWidth(500)
    .setHeight(785);
  SpreadsheetApp.getUi().showModelessDialog(html, 'Compte à Rebours');
}

Bonne Journée

Génial!

Bonjour,

Avec une boite de dialogue

chapeaubas

Parfait un grand merci ImoKa

Pour transmettre la valeur d'une cellule au décompte ...

  • Créer une zone fin qui contiendra la date de fin
  • Ajouter dans le code .gs
function targetTime(){return SpreadsheetApp.getActiveSpreadsheet().getRange('fin').getValue()}
  • Modifier le fichier cr.html
finannee = new Date(<?= targetTime() ?>);
Rechercher des sujets similaires à "actualiser seconde"