Automatisation des journaux d’intervention des sapeurs-pompiers

L’organisation des journaux d’interventions est cruciale pour les sapeurs-pompiers, car elle garantit une traçabilité efficace et un suivi rigoureux. Grâce à Google Forms et Apps Script, vous pouvez automatiser le processus de gestion des interventions. Dans cet article, nous allons explorer comment un script facilite l’attribution automatique de numéros d’intervention suivant un format structuré.

Objectif

Le but de ce projet est de générer automatiquement des numéros d’intervention uniques à chaque soumission via un Google Form. Par exemple, un numéro comme INT-2024-001 est attribué pour la première intervention de l’année 2024.

Le fonctionnement du script

Voici comment fonctionne le script :

1. Configuration initiale :

Le script commence par définir un préfixe (INT) et utilise l’année courante pour créer un format standardisé. Ces paramètres peuvent être ajustés selon vos besoins.

2. Récupération des données :

Le script identifie la colonne dédiée aux numéros d’intervention dans une feuille Google Sheets associée. Si la colonne est introuvable, une erreur est levée pour éviter des comportements inattendus.

3. Calcul de la séquence :

Le script lit le dernier numéro d’intervention enregistré et en extrait la partie numérique. Il incrémente ensuite cette séquence pour générer le prochain numéro. Si aucun numéro précédent n’existe, il initialise la séquence à 1.

4. Formatage du nouveau numéro :

Le numéro est formaté selon le modèle PREFIXE-ANNEE-XXX où XXX est un numéro à trois chiffres avec des zéros à gauche pour respecter un alignement.

5. Écriture dans la feuille :

Le nouveau numéro est enregistré dans la cellule appropriée à la ligne soumise.

Le code en détail

Voici le script utilisé pour automatiser ce processus :

function onFormSubmit(e) {
  try {
    const CONFIG = {
      PREFIXE: 'INT',
      ANNEE_COURANTE: new Date().getFullYear()
    };
    
    const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    const headers = feuille.getRange(1, 1, 1, feuille.getLastColumn()).getValues()[0];
    const colonneNumeroIndex = headers.findIndex(header => header.includes('Numéro d\'Intervention'));
    
    if (colonneNumeroIndex === -1) {
      throw new Error('Colonne "Numéro d\'Intervention" non trouvée');
    }
    
    const derniereLigne = feuille.getLastRow();
    const dernierNumero = derniereLigne > 1 
      ? feuille.getRange(derniereLigne - 1, colonneNumeroIndex + 1).getValue() 
      : null;
    
    let nouvelleSequence;
    if (!dernierNumero || dernierNumero === '') {
      nouvelleSequence = 1;
    } else {
      const match = dernierNumero.match(/\d+$/);
      nouvelleSequence = match ? parseInt(match[0]) + 1 : 1;
    }
    
    const nouveauNumeroIntervention = `${CONFIG.PREFIXE}-${CONFIG.ANNEE_COURANTE}-${String(nouvelleSequence).padStart(3, '0')}`;
    feuille.getRange(derniereLigne, colonneNumeroIndex + 1).setValue(nouveauNumeroIntervention);
    console.log(`Nouvelle intervention : ${nouveauNumeroIntervention}`);
    
  } catch (erreur) {
    console.error(`Erreur lors de la génération du numéro : ${erreur.message}`);
  }
}

Cas d’utilisation

Voici quelques scénarios concrets où ce script peut être utilisé :

  • Suivi des interventions en temps réel : Chaque intervention est automatiquement enregistrée avec un numéro unique et horodatée via le formulaire.
  • Organisation centralisée : Toutes les données des interventions sont consolidées dans une feuille Google Sheets, ce qui permet une analyse statistique ou une planification future.
  • Traçabilité accrue : Avec des numéros standardisés, il est facile de rechercher une intervention spécifique ou de générer des rapports annuels.

Grâce à cette automatisation, la gestion des journaux d’intervention devient beaucoup plus fluide. Non seulement ce système réduit les erreurs humaines, mais il simplifie aussi l’accès aux informations critiques. Avec Google Forms et Apps Script, les sapeurs-pompiers peuvent consacrer plus de temps à leurs missions essentielles et moins à la paperasse.

Vous utilisez déjà une solution similaire ? N’hésitez pas à partager vos expériences dans les commentaires ! 🚒✨