Comment insérer un tableau app script dans une feuille ?

Bonjour,

J'ai une feuille avec des données en A2:B21, je prends les données pour les insérer dans un tableau app script. Après l'exécution des instructions, je voudrais les insérer la ou j'ai marqué ma formule (dans ce cas en C2).

Code app script

function TABLEAU(plage, nombre_limite, type) {
  var feuille = SpreadsheetApp.getActivesheet();
  var donnees = feuille.getRange(plage);
  var tab = [];
  if(type == 0) {
    for(var i = 0;i<donnees.length;i++) {
      if(donnees[i]>=nombre_limite) {
        tab.push(donnees[i]);
      }
    }
  } else if(type == 1) {
    for(var i = 0;i<donnees.length;i++) {
      if(donnees[i]<=nombre_limite) {
        tab.push(donnees[i]);
      }
    }
  }
 //Insertion de tab dans la feuille
}

Tableur:

https://docs.google.com/spreadsheets/d/1n5PGfiOEKbgg1qspCrXFLG-MXyMF5XcQZFQ40y7zHFI/edit#gid=0

Bonne Journée

Un premier écueil ... si tu écris

var donnees = feuille.getRange(plage).getValue();

alors plage doit être string ! et donc

=TABLEAU("A2:B21";10;0)

et puis comme il s'agit d'une plage getValueS prend un s final

var donnees = feuille.getRange(plage).getValues();

maintenant, donnees est un array à 2 dimensions ...

donc

function TABLEAU(plage, nombre_limite, type) {
  var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var donnees = feuille.getRange(plage).getValues();
  var tab = [];
  if(type == 0) {
    for(var i = 0;i<donnees.length;i++) {
      if(donnees[i][1]>=nombre_limite) {
        tab.push([donnees[i][0],donnees[i][1]]);
      }
    }
  } else if(type == 1) {
    for(var i = 0;i<donnees.length;i++) {
      if(donnees[i][1]<=nombre_limite) {
        tab.push([donnees[i][0],donnees[i][1]]);
      }
    }
  }
  return tab
}

plus simple ici est de faire un query ou filter

=query(A:B;"select * where B<=10 ";1)

Un premier écueil ... si tu écris

var donnees = feuille.getRange(plage).getValues();

alors plage doit être string ! et donc

=TABLEAU("A2:B21";10;0)

si tu veux traiter un objet et non un string, voici une solution (je ne sais pas s'il y en a de meilleure)

function appelPlage(plage) {
  var nbCol = 2
  if (typeof plage == 'object'){var liste = plage.join().split(",")} else {var liste = plage.split("|")}
  var tab=[]
  for (var i=0;i<=liste.length/nbCol;i+=nbCol){tab.push([liste[i],liste[i+1]])}
  return tab
}

tab contient alors les valeurs de plage

Merci, je teste puis je te confirme.

Je n’utilise pas QUERY, vu que c’est un échantillon d’une BD.

Et je veux utiliser une case à cocher qui avec query va bugé.

=TABLEAU(A2:B21;10;F1)

Merci pour ta réponse.

Je n’utilise pas QUERY, vu que c’est un échantillon d’une BD.

Et je veux utiliser une case à cocher qui avec query va bugé.

Ah bon !! ??

=QUERY(A2:B21;"SELECT A, B WHERE B >=10")
=QUERY(A2:B21;"SELECT A, B WHERE B >=F2")

Avec F2 une autre valeur de recherche

Il faut sortir F2 de la chaine de caractères

=query(A:B;"select * where B<=" & F2 & " ";1)
Rechercher des sujets similaires à "comment inserer tableau app script feuille"