Sheets/Script : MultiJoin, concaténer un tableau dans une cellule

581 0

Objectif

Le résultat d’une formule qui retourne un tableau à une dimension (une ligne ou une colonne) peut facilement se concaténer avec la formule JOIN ( “Séparateur” ; tableau ). Lorsque le résultat comporte un tableau en deux dimensions (lignes et colonnes), il n’existe pas de solution native parmi les fonctions Google Sheets. Cet article propose d’écrire avec Google Apps Script une fonction personnalisée.

Nous appellerons cette fonction “multiJoin” :

multiJoin ( table , [separateurLignes] , [separateurColonnes] )

Les paramètres de cette fonction seront :

  • table : le tableau source à concaténer
  • separateurLignes : optionnel, le caractère de séparation. Si non précisé, un espace est utilisé
  • separateurColonnes : optionnel, le caractère de séparation. Si non précisé, un retour à la ligne est utilisé

Le code ci-dessous est commenté, vous pourrez suivre ligne par ligne le fonctionnement. Pour insérer un script dans Google Sheets, rendez-vous dans Outils > Editeur de scripts.

Code

function multiJoin(table, separateurLignes, separateurColonnes) 
// Prends en paramètre un tableau à deux dimensions (lignes et colonnes), par exemple le résultat d'une Query
// Renvois une chaîne de caractères unique (qui tient en une seule cellule) avec les colonnes séparées par un caractère (espace par défaut),
// Et les lignes par un autre (retour à la ligne par défaut)
{
  if (separateurLignes == undefined)
    separateurLignes = " "; 
    // Si le séparateur de lignes n'est pas défini, le définir sur un espace
    
  if (separateurColonnes == undefined)
    separateurColonnes = "\n"; 
    // Si le séparateur de colonnes n'est pas défini, le définir sur un retour à la ligne

  var resultString = ""; // Déclaration de la variable résultat initialisée sur une chaîne vide
    for (var i in table) // Boucle sur toutes les lignes du tableau
    {
      if (i!=0) // Ajout du séparateur colonnes, sauf pour la première ligne (i=0)
        resultString += separateurColonnes;
        
      for (var j in table[i]) // Boucle sur les colonnes de la ligne en cours
      {
        if (j!=0)
          resultString += separateurLignes + table[i][j]; 
          // Ajout du séparateur et du contenu de la cellule en cours lorsque ce n'est pas la première cellule de la ligne
        else
          resultString += table[i][j]; 
          // Si c'est la première cellule, ne pas ajouter de séparateur
      }
      
    }
    
    return resultString; // Le résultat texte est renvoyé
}

Exemple d’utilisation

Dans un précédent article, nous avons parlé du résultat d’une recherche multiple avec la fonction Query : voir l’article

Dans cet exemple, on ne précise pas les séparateurs qui sont optionnels, on garde donc le choix par défaut.

Nous souhaitons obtenir le résultat d’une recherche qui comporte plusieurs lignes (ici tout ce que propose un magasin donné) et plusieurs colonnes (le nom de l’article, ainsi que la quantité disponible et son prix)

Exemple en image de la fonction sur Google Sheets

Si vous avez trouvé une faute d’orthographe, veuillez nous en informer en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée .

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :