Comment trier une colonne de dates et d’heures dans Google Sheets avec Apps Script ?

Lors de la gestion de plannings, journaux, ou autres données sensibles au temps, il peut être utile de trier une colonne de dates et d’heures. Google Apps Script permet d’automatiser facilement cette tâche. Dans cet article, nous allons parcourir les étapes pour créer un script qui trie automatiquement une colonne de dates et d’heures dans Google Sheets.

Voici un exemple de données pour illustrer le processus de tri :

ÉvénementDate et Heure
Réunion ADimanche 3 novembre 2024 23:42:00
Réunion BLundi 4 novembre 2024 10:15:00
Réunion CSamedi 2 novembre 2024 17:30:00
Réunion DMardi 5 novembre 09:00:00
Réunion EMercredi 6 novembre 2024 14:45:00
Tableau exemple

Guide étape par étape

  1. Configurez la feuille Google Sheet
    • Créez une feuille de calcul Google et remplissez-la avec les données ci-dessus. Assurez-vous que les dates et heures sont dans le format spécifié.
  2. Ouvrez l’éditeur de script
    • Dans Google Sheets, allez dans Extensions > Apps Script pour ouvrir l’éditeur de scripts Google.
  3. Écrivez le script
    • Collez le code suivant dans l’éditeur de script pour trier la colonne “Date et Heure” :
function trierDates() {
  const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const plage = feuille.getRange("A2:B6");
  let valeurs = plage.getValues();

  Logger.log("Valeurs originales : " + JSON.stringify(valeurs));

  // Convertit les objets de date en chaînes de caractères formatées
  valeurs = valeurs.map(([evenement, dateHeure]) => [evenement, formaterDate(dateHeure)]);

  // Trie les chaînes de caractères formatées
  valeurs.sort((a, b) => analyserDate(a[1]) - analyserDate(b[1]));

  Logger.log("Valeurs triées : " + JSON.stringify(valeurs));

  // Réinsère les valeurs triées dans la plage
  plage.setValues(valeurs);
}

function formaterDate(date) {
  if (date instanceof Date) {
    // Formate la date en "Dim, 2 juin 2024, 23:42"
    const options = {
      weekday: 'short',
      year: 'numeric',
      month: 'short',
      day: 'numeric',
      hour: 'numeric',
      minute: 'numeric',
      hour12: true
    };
    return date.toLocaleString('fr-FR', options).replace(',', '');
  }
  return date;
}

function analyserDate(chaineDate) {
  if (typeof chaineDate !== 'string') {
    Logger.log("Chaîne de date invalide : " + chaineDate);
    return new Date(0);
  }

  const elementsDate = chaineDate.split(' ');
  if (elementsDate.length < 5) {
    Logger.log("Format invalide : " + chaineDate);
    return new Date(0);
  }

  const [jourSemaine, mois, jour, annee, heure, periode] = elementsDate;

  // Combine les parties date et heure pour créer une chaîne valide
  const dateStr = `${mois} ${jour}, ${annee} ${heure} ${periode}`;
  Logger.log("Chaîne de date analysée : " + dateStr);

  return new Date(dateStr);
}

Explication du script

  • Fonction formatDate(date) : Cette fonction formate un objet Date en chaîne de caractères dans le format souhaité.
  • Fonction trierDates() : Le script convertit chaque objet date en chaîne formatée via formatDate() avant de trier la colonne.
  • Validation dans analyserDate() : Cette fonction vérifie la validité du format de la chaîne et enregistre les formats non conformes.

Exécution du script

  1. Enregistrez le script avec un nom explicite,
  2. Dans l’éditeur Apps Script, cliquez sur le bouton de lancer (icône de triangle) à côté de la fonction trierDates pour exécuter le script.
  3. Retournez à votre feuille Google : la colonne “Date et Heure” devrait maintenant être triée dans l’ordre croissant.

Grâce à Google Apps Script, vous pouvez automatiser le tri d’une colonne de dates et heures dans un format spécifique. Cette méthode est efficace et permet de gagner du temps, notamment pour les ensembles de données volumineux. Bon codage !


Conseils supplémentaires

  • Automatisation du script : Vous pouvez configurer un déclencheur pour exécuter ce script automatiquement à intervalles réguliers ou lorsque la feuille est modifiée.
  • Gestion des erreurs : Ajoutez une gestion des erreurs pour traiter les formats de dates inattendus ou les cellules vides.
  • Personnalisation : Modifiez la fonction parseDateString pour prendre en charge différents formats de dates, selon vos besoins.