web-dev-qa-db-fra.com

Mise à jour automatique de la colonne dans la feuille de calcul Google indiquant la date de la dernière modification

Essayez de trouver un moyen d'avoir la colonne deux mise à jour automatique pour afficher un horodatage de la dernière mise à jour. Je me rends compte que la doc montre un horodatage de la dernière modification, mais beaucoup de clients ont accès à la doc et l’ajustent en même temps. Donc, cette demande a été faite. J'admets que je n'ai pas encore codé, donc ça me dépasse.

Myanda avait posté quelque chose qui semblait aller dans la bonne direction, mais nous ne savons pas comment le mettre en œuvre pour nos besoins:

Horodatage de la feuille de calcul Google?

36
RichGonzalez

Ok, voici une version modifiée du code dans ma réponse précédente:

function onEdit(e) {
  // Your sheet params
  var sheetName = "MySheet";
  var dateModifiedColumnIndex = 2;
  var dateModifiedColumnLetter = 'B';

  var range = e.range; // range just edited
  var sheet = range.getSheet();
  if (sheet.getName() !== sheetName) {
    return;
  }

  // If the column isn't our modified date column
  if (range.getColumn() != dateModifiedColumnIndex) { 
    var row = range.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy, hh:mm:ss");
    var dateModifiedRange = sheet.getRange(dateModifiedColumnLetter + row.toString());
    dateModifiedRange.setValue(time);
  };
 };

Cela permet de saisir la ligne de toute cellule modifiée et d'attribuer un horodatage à la deuxième colonne de cette ligne particulière.

Pour mettre en œuvre, tout ce que vous avez à faire est d'aller dans la feuille de calcul et de cliquer sur Tools> Script Editor. Dans la page d'édition résultante, collez simplement ceci ici. Comme il s’agit d’une fonction onEdit(), elle devrait fonctionner sans rien ajouter aux cellules de votre feuille de calcul. Il vous suffit de la coller dans l’éditeur et de la sauvegarder.

Pour l'horodatage, j'ai défini le format sur MM/jj/aa et laissé l'heure. Si vous voulez le changer, vous pouvez simplement changer l'utilisation de Utilities.formatDate.

36
OnenOnlyWalter

Pour votre information, la réponse acceptée utilise DD comme format de jour, ce qui vous donne un résultat du type "312", c’est-à-dire le 312e jour de l’année.

J'ai utilisé ceci:

"yyyy-MM-dd, hh:mm:ss"

pour obtenir ceci:

2013-11-12, 03:43:20
8
Dan Nguyen

J'espère que c'est OK pour mettre ici. Vous trouverez ci-dessous une modification de la fonction ci-dessus, mais vous devez le faire pour une ligne (ligne 9) plutôt que pour des colonnes. Comprendre comment utiliser l'affectation de colonne était très frustrant, mais s'est avéré extrêmement simple. Merci à OnenOnlyWalter pour le code original:


function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); // Get spreadsheet name 
    var r = s.getActiveCell(); // store active cell name in current spreadsheet 
  var cell1 = 9 // This is the row I want to put values
  if(r.getRow() != cell1) { // Ignores this row (where I put the dates)
    var column = r.getColumn();  // Get column # from active cell
    var time = new Date(); // Get date and time of last mod
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss"); // Format date and time
    SpreadsheetApp.getActiveSheet().getRange(cell1,column).setValue(time); // put in time in cell
  };
 };
4
user2023699