Récupérer les dates de sauvegarde fichier

Bonjour,

Pour inciter l'opérateur à prendre conscience de ses fréquences de MAJ fichier trop espacées , je cherche à récupérer , sauvegarder et faire apparaître dans un message box , l'historique des derniers jours de sauvegarde..

- Une MAJ par l'opérateur devrait être effectuée au minima chaque semaine.. (Si plusieurs MAJ le même jour , une seule date devra être enregistrée)
- La base d'historique serait suffisante avec les 6 dernières semaines.

j'ai parcouru le forum ainsi que la 'toile' mais rien de probant...
Juste une instruction trouvée : "last modified date" , avec laquelle je n'ai pas réussi a faire quelque chose de propre...

Pouvez-vous m'orienter ?

Merci.
Max.

Bonjour,

Pour obtenir la date de la dernière mise à jour d'un fichier

Sub TestDate()
  Dim dt As Date

  dt = FileDateTime("C:\...\mon_fichier.txt") ' adapter le chemin à la siruation
  MsgBox "Fichier modifié le " & dt, vbInformation
End Sub

Bonne journée

Bonjour,

@Max : excel ou google sheets ?

Bonjour ,

Pardon pour imprécision : mon soucis concerne Google sheets.

Cdlt.
Max.

Non non, c'était précis, mais je m'interrogeais sur la réponse de Jacky qui concerne exclusivement excel.

Je regarde un point ... il me semble qu'il ne faille pas interroger le drive lui-même car en cas d'ouverture de fichier, la date se met à jour. Il vaut mieux entretenir un onglet espion avec les dates de réelles mises à jour des données.

Bonjour,

avec GSheets comme ceci peut-être

function dernModif() {
fileId="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";//ID du fichier à vérifier
  var lastUpdated = DriveApp.getFileById(fileId).getLastUpdated();
  console.log(lastUpdated);
}

Merci Gilbert, tu as donné la réponse que je voulais ... en effet, la simple ouverture du fichier ne modifie pas la date de dernière modif.

@Max, si tu veux une liste des dernièreS modificationS, alors il faudra passer par un enregistrement sur le fichier lui-même.

@Mike

"la simple ouverture du fichier ne modifie pas la date de dernière modif."

sauf peut-être si le fichier possède un trigger onOpen() par exemple

dans ce cas la mise à jour est faite à l'ouverture qu'en penses-tu ???

je vais faire l'essai pour confirmation

une fonction personnalisée change aussi la dernière modification.

Je suis en train de faire un test, mais curieusement il ne veut pas afficher la date à l'ouverture ...

function onOpen(){
  fileId="1HQ3SQCnqeZS-Ctj_qWRJdvVozLDwU4CuG1CptH5bCGs";//ID du fichier
  var lastUpdated = DriveApp.getFileById(fileId).getLastUpdated();
  Browser.msgBox(lastUpdated)
}

alors que ceci fonctionne bien

function dernModif() {
  fileId="1HQ3SQCnqeZS-Ctj_qWRJdvVozLDwU4CuG1CptH5bCGs";//ID du fichier
  var lastUpdated = DriveApp.getFileById(fileId).getLastUpdated();
  Browser.msgBox(lastUpdated);
}

du coup, pour le moment, j'en suis là (avant que tu ne répondes ce matin)

function onEdit(event){ 
  var f = event.source.getActiveSheet();
  var h = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('historique')
  if (f.getName() != 'historique'){ 
    var d = new Date();
    if(Math.floor(d/1000/60/24/24) != Math.floor(h.getRange('A2').getValue()/1000/60/24/24)){
      h.insertRowBefore(2);
      h.getRange('A2').setValue(d);
    }
  }
}
function onOpen(){
  var h = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('historique')
  toast(Utilities.formatDate(h.getRange('A2').getValue(), "GMT+2", "EEEE dd/MM/yyyy"),'dernière modification')
}
function toast(body, title, timeout) {
  return SpreadsheetApp.getActive().toast(
    body,
    title || "information",
    timeout || 5 
  );
}

https://docs.google.com/spreadsheets/d/1HQ3SQCnqeZS-Ctj_qWRJdvVozLDwU4CuG1CptH5bCGs/copy

Dans mon cas, la fonction personnalisée ne modifie pas la date puisqu'elle est donnée lors d'un événement onEdit (donc intervention manuelle), j'étais parti de cette idée.

pour afficher à l'ouverture avec onOpen() il faut le déclarer dans les déclencheurs

comme ceci

20210606 175832 001

Merci vraiment pour votre implication ..
Je viens de de connecter à l'instant après avoir tenter "d'élucubrer' quelques avancées et découvre vos recherches et essais ...

Ce qui est notable avec mes essais :
- Une modif du fichier entraîne bien un enregistrement , mais qui n'est pas tout de suite visualisable lors des appels successifs avec "file.getLastUpdated()".
- J'ai choisi , et réussi bien a coller dans une feuille dédiée 'Mem' , les différentes dates/heures de sauvegarde.
- Je suis bloqué sur une problématique de comparaison entre une Nvlle date entrante et la précédente date déjà enregistrée sur la feuille 'Mem'.
(Sans doute parce que j'ai formaté les cellules en style "06/06/2021 16:46:49"...)
Ceci éviterais de remplir inutilement la feuille , si une date identique apparaît.
- L'avertissement écrit qui s'ensuivra lors d'une sauvegarde fichier , sera déclenché lors de l'ouverture du fichier , dans le cas ou aucune sauvegarde n'aura été enregistrée depuis une semaine. (Dans le cas contraire , pas de Mess)
- Je pensais afficher dans le message d'avertissement la dernière date de sauvegarde effective.

Pour info , voici ci-dessous mes quelques lignes , pas forcément bien adaptées...

Bien cordialement !

function T_1() {

var app = SpreadsheetApp ;
var classeur = app.getActiveSpreadsheet() ;
var feuille = classeur.getActiveSheet();

var fileID = SpreadsheetApp.getActiveSpreadsheet().getId();
var file = DriveApp.getFileById(fileID);
var res = file.getLastUpdated();

console.log (res);

var memFeuille =classeur.getSheetByName('Mem');
var ligne = memFeuille.getLastRow();

var ancLigne = new Date(memFeuille.getRange(ligne, 2).getValue);
var nouvLigne = new Date(memFeuille.getRange(ligne+1, 2).getValue);

Logger.log(ancLigne); 

//Si nouvelle Svg  ,écrit ds feuille "mémoire" (Mem)
if (ancLigne < nouvLigne) {   

  memFeuille.getRange(ligne+1, 2).setValue(res);

}

  var T=0;

}

- Je suis bloqué sur une problématique de comparaison entre une Nvlle date entrante et la précédente date déjà enregistrée sur la feuille 'Mem'. (Sans doute parce que j'ai formaté les cellules en style "06/06/2021 16:46:49"...)

non ce n'est pas une question de formatage, divise la "date" par 1000*60*24*24 pour ne retenir que le jour comme j'ai fait ci-dessus

Bonjour ,

J'avance ... doucement ...

Dans le formatage de date par "(Utilities.formatDate(memFeuille.getRange('b3').getValue(), "GMT+2", "EEEE dd MMMM yyyy")" , je ne parviens pas à touver le parametrage qui me permettrait d'afficher le jour de la semaine en Francais (Ex : lundi au lieu de monday)

Est-ce possible ?

Merci.
Cdlt.
Max.

tester ceci

function test(){
  switch (new Date().getDay()) {
    case 0:
        day = "Dimanche";
        break;
    case 1:
        day = "Lundi";
        break;
    case 2:
        day = "Mardi";
        break;
    case 3:
        day = "Mercredi";
        break;
    case 4:
        day = "Jeudi";
        break;
    case 5:
        day = "Vendredi";
        break;
    case 6:
        day = "Samedi";
}
    var d = new Date();
    var n = d.toLocaleTimeString();

    var madate = d.toLocaleDateString();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet =ss.getSheetByName("nom de la feuille").getRange('B1').setValue(day +" "+ madate);
    Logger.log( day +" "+ madate);
}

@Gilbert ... rien en langue de Molière alors ?

Autre proposition dans ce cas ...

  var jour=['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']
  Logger.log('Nous sommes ' + jour[new Date().getDay()])

Merci.

@ Mike " rien en langue de Molière alors ?"

hé non c'est en langue GOOGLE à ma connaissance ;)

Bonjour ,

A force de faire des essais , je me rends compte que les boites de dialogues personnalisées correspondront mieux a mes attentes..

Quel est l'instruction a placer dans le fichier xxx.htlm , pour récupérer et afficher dans la fenêtre de Dialogue , une valeur de range de la feuille active ?

Merci par avance.

Bien cordialement.
Max.

Max,

s'il s'agit d'un nouveau sujet, n'hésite pas clore ce fil de discussion en cliquant sur de la réponse qui te convient et d'ouvrir un autre topic.

Rechercher des sujets similaires à "recuperer dates sauvegarde fichier"