Horodatage Google Sheets en cas de modification

Sep 09 2020

Ce que j'essaie de réaliser est vraiment simple, mais je suis très mal à l'aise avec l'éditeur de script Google Sheet.

Je veux que la date dans une certaine cellule soit mise à jour chaque fois que quelque chose change sur la feuille active.

C'est ce que j'ai jusqu'à présent:

//Timestamp on change
function timestampOnChange() {
  getActiveCell().setValue(new Date());
}

Cependant, même cela renvoie déjà des messages d'erreur: /

Réponses

1 Mario Sep 09 2020 at 00:50

Explication:

  • Vous devez créer un déclencheur onChange () d'une fonction particulière qui mettra à jour une cellule spécifique de la feuille active lorsque la feuille de calcul change de contenu ou de structure .

  • La updateCell()fonction met à jour la valeur de B1 avec l'horodatage actuel de la feuille active .

  • Je vous conseillerais de mettre à jour une feuille spécifique au lieu de la feuille active en utilisant:

    const sh = ss.getSheetByName('Sheet1');
    

    à la place de:

    const sh = ss.getActiveSheet();
    

Solution:

  • Plus en détail, la createOnChangeTrigger()fonction créera le onChange()déclencheur qui s'exécutera en updateCell()cas de modification du contenu ou de la structure du fichier tableur et dans notre cas la feuille active.

    function createOnChangeTrigger(){
      const ss = SpreadsheetApp.getActive();
      ScriptApp.newTrigger("updateCell")
      .forSpreadsheet(ss)
      .onChange()
      .create();
    }
    
    function updateCell(){
      const ss = SpreadsheetApp.getActive();
      const sh = ss.getActiveSheet();  
      sh.getRange('B1').setValue(new Date());
    }
    

Instructions:

Copiez / collez les deux fonctions dans l'éditeur de script et createOnChangeTrigger()ne les exécutez qu'une seule fois.


Les références:

  • sur le changement()
Rubén Sep 09 2020 at 02:19

De la question:

//Timestamp on change
function timestampOnChange() {
  getActiveCell().setValue(new Date());
}

Cependant, même cela renvoie déjà des messages d'erreur

Le code ci-dessus renvoie une erreur car il ne s'agit pas d'une fonction de script Google Apps intégrée nommée getActiveCell(). Pour obtenir la cellule active, vous pouvez utiliser

SpreadsheetApp.getCurrentCell()

ou alors

SpreadsheetApp.getActiveRange()

ou si vous utilisez un objet d'événement d'édition (disons qu'il est assigné à e), vous pouvez utilisere.range

Cela vaut la peine de ne pas que si vous utilisez setValue(new Date())sur la cellule active tout ce qui a été entré dans cette cellule sera écrasé.

Sur Web Applications, un site sœur de Stack Overflow, il y a beaucoup de questions / réponses sur les horodatages dans Google Sheets, en fait, il y a une balise pour eux ---> https://webapps.stackexchange.com/questions/tagged/google-sheets-timestamp. Jusqu'à présent, il y a 102 questions avec cette balise.