Horodatage Google Sheets en cas de modification
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
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 leonChange()déclencheur qui s'exécutera enupdateCell()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()
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.