🧠 Optimisez Vos Tableaux Google Sheets : Développez une Fonction Consulter_Client() Ultra-Réactive avec Google Apps Script
🧠 Optimisez Vos Tableaux Google Sheets : Développez une Fonction Consulter_Client() Ultra-Réactive avec Google Apps Script
🔍 Contexte
Lorsque vous développez des interfaces interactives dans Google Sheets, il est courant de vouloir charger dynamiquement des informations à partir d’une ligne sélectionnée. Le script Consulter_Client() vous permet précisément cela : en un clic, les données de la ligne active sont extraites et réparties intelligemment dans des blocs d’affichage bien définis. Et pour les perfectionnistes : cette version est hautement optimisée pour la performance.
🚀 Objectif
Créer une fonction rapide, dynamique et robuste qui :
-
Extrait les données de la ligne sélectionnée dans un tableau structuré à partir de l’en-tête (ligne 10).
-
Alimente des champs d’affichage répartis sur plusieurs colonnes.
-
Gère un cas spécial où le libellé d’un champ est dynamique (S2 → S3).
-
Évite les ralentissements liés à l’accès répétitif aux cellules.
🧩 Structure des Données
-
Ligne d’en-tête : ligne 10.
-
Données : à partir de la ligne 11.
-
Libellés dynamiques (ex. : "Nom", "Téléphone", etc.) sont définis dans certaines cellules (ex. G2:G8, I2:I8…).
-
Données extraites à partir de la ligne sélectionnée.
-
Résultat : remplissage des colonnes H, J, L, N, P, R, et S.
🔎 Code Complet Optimisé
🛠️ Points Techniques Clés
1. Optimisation du nombre d’appels
Au lieu de faire des
getValue()multiples pour chaque cellule, on récupère toute la ligne et l’en-tête une seule fois. Cela réduit drastiquement le temps d’exécution.
2. Utilisation de indexOf()
Pour rendre le script dynamique même si les colonnes changent de position, on cherche les colonnes par leur libellé.
3. Blocs extensibles
Grâce à une structure en tableau (
blocks), il est facile d’ajouter ou modifier des zones de saisie.
4. Cas dynamique (S2 → S3)
Ce cas illustre une logique conditionnelle intelligente, utile pour des modules flexibles.
5. Calculer les cellules à remplir
🎯 Contexte général
Ce code est utilisé pour préparer dynamiquement la liste des cellules de destination dans une feuille Google Sheets. L'objectif est de savoir où écrire les valeurs extraites, selon une structure de type "Libellé → Valeur".
Par exemple :
-
G1est un libellé, et la valeur associée doit aller dansH1 -
F2est un libellé, et la valeur doit aller dansG2 -
...
-
S2est un libellé dynamique, donc la valeur ira dansS3
🧩 Structure ligne par ligne
On crée un tableau destinations qui contiendra les adresses des cellules à remplir avec les valeurs (les données utilisateurs, pas les libellés).
On commence avec la cellule H1 (destination de la valeur associée à G1, qui contient le libellé).
Génère un tableau de 7 éléments : G2, G3, ..., G8.
🔁 Explication :
-
Array.from({ length: 7 }, (_, i) => ...)crée un tableau de 7 lignes. -
Pour chaque index
ide 0 à 6, on génèreG${i + 2}→ soit G2 à G8.
Même logique que précédemment, mais pour les colonnes suivantes :
-
I2:I8(libellés) → valeurs dansJ2:J8 -
K2:K8→L2:L8 -
etc.
Chaque paire correspond à une zone de données étiquetée horizontalement sur deux colonnes (ex. I2 = libellé, J2 = valeur).
Ajoute la cellule S3 comme dernière destination, pour le cas où S2 contient un libellé personnalisé (ajout récent dans le script).
Utilisé pour aplatir le tableau de tableaux ([["G2"], ["G3"], ...]) en un simple tableau :
Cela simplifie l'itération sur les cellules à remplir plus tard dans le script.
✅ Résumé logique
| Libellé | Valeur (destination) |
|---|---|
| G1 | H1 |
| F2:F8 | G2:G8 |
| I2:I8 | J2:J8 |
| K2:K8 | L2:L8 |
| M2:M8 | N2:N8 |
| O2:O8 | P2:P8 |
| Q2:Q8 | R2:R8 |
| S2 | S3 |
🧠 À quoi sert cette liste ?
Elle permet à un script (par exemple une fonction remplirDepuisLigne()) de remplir toutes les cellules de droite avec les données récupérées, en se basant sur les libellés dynamiques saisis par l’utilisateur.
📌 Conclusion
La fonction Consulter_Client() optimisée est un exemple parfait d'une approche propre, rapide et évolutive pour développer des solutions avancées dans Google Sheets. En rationalisant les accès aux cellules et en centralisant la logique, vous pouvez obtenir des performances proches du temps réel même avec de grands tableaux.
Commentaires
Enregistrer un commentaire