Page 1 sur 1

Programme pour crée un indicateur

Publié : 19 avr. 2023 14:13
par Jeanne
Bonjour,

Je cherche à crée un indicateur sur google sheet en codant sur google app script. Voici ce que je cherche à faire :
J'ai plusieurs lignes dans un tableau, chacune d'elles renseignent un domaine et une valeur (soit "pos" (point positif) soit "neg" (négatif)). Le programme permettrait de regarder combiens il y a de "pos" et de "neg" en fonction d'un domaine.
voir exemples en pièces jointes.
On tire ensuite de ce tableau (capture 1) l'indicateur recherché.

Le programme que j'ai commencé à faire ne fonctionne visiblement pas ... je le met ci dessous.
function Valdom() {
  var feuilleBD = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("BD");
  var caze = feuilleBD.getDataRange().getValues();
  var compteur1 =0
  var compteur2 = 0
  var compteur3 = 0
  var taille = caze.length
  console.log(caze[2][3])
  for(i=3;i<=taille;i++){
   if(caze[3] == "CAF / Client") {
     compteur1= compteur1+1
   }
   else if (caze[3] == "Chiffrage / AVP") {
     compteur2= compteur2+1
   }
    else (caze[3] == "MdP / Process Projet") {
      compteur3= compteur3+1
   }
  }
  console.log(compteur1)
  console.log(compteur2)
  console.log(compteur3)
}
Si vous avez une idée pour me débloquer ou un code similaire je suis preneuse...

Cordialement,
Jeanne




 

Re: Programme pour crée un indicateur

Publié : 19 avr. 2023 16:58
par NC_Quentin
Bonjour !

Bien qu’il soit tout à fait possible de faire la chose en Apps Script, je recommanderai plutôt dans ce cas de le faire en pur Sheets. Il y a plusieurs façons de le faire, ma préférée étant avec la fonction QUERY (probablement une préférence de développeur, je l’avoue).

Voilà le fichier d’exemple que j’ai rapidement créé, similaire à ce que vous avez :

Image

Image

On peut voir la formule que j’ai utilisée en B2 :

=SIERREUR(QUERY('Tableau valeur/domaine'!$A$2:$B;"SELECT COUNT(A) WHERE A = 'Pos' AND B = '"&B1&"' LABEL COUNT(A) ''");0)

Découpons-la rapidement :
  • SIERREUR( … ; 0 ) : Lorsque QUERY ne renvoie pas de résultat, il renvoie une erreur #N/A (par exemple, si le domaine n’a eu aucune ligne avec Pos). Plutôt que d’afficher #N/A, on va afficher 0.
  • QUERY : Le gros du sujet. Il y a deux arguments :
    • 'Tableau valeur/domaine'!$A$2:$B : La feuille dans laquelle je cherche mes données avec ma requête. On notera l’adresse absolue pour faciliter la copie de la formule sur plusieurs colonnes et lignes.
    • "SELECT COUNT(A) WHERE A = 'Pos' AND B = '"&B1&"' LABEL COUNT(A) ''" : La requête QUERY en elle-même. Il faut la lire ainsi : "Affiche-moi (SELECT) le nombre d’éléments de la colonne A (COUNT(A)) lorsque A vaut Pos et que B vaut la valeur en B1, et mets une étiquette vide pour cette colonne."
La subtilité principale est sur le LABEL COUNT(A) '' à la fin, qui permet de retirer l’en-tête automatique que QUERY nous donnerait sinon et donnerait alors un résultat sur deux lignes (avec un en-tête "count").

Après cela, il ne reste plus qu’à recopier la formule et changer le 'Pos' en 'Neg' sur la deuxième ligne et le tour est joué !

Si vous voulez en apprendre beaucoup plus sur la fonction QUERY et voir toutes ses subtilités, je ne peux que vous recommander le merveilleux guide de Numericoach sur le sujet avec des exercices et corrigés. Je l’ai moi-même utilisé pour monter en niveau dessus, il est vraiment bien !

J’espère que tout ceci a été assez clair et a pu vous aider !
 

Re: Programme pour crée un indicateur

Publié : 21 avr. 2023 11:24
par Jeanne
Merci infiniment !
Je ne connaissais pas ces fonctions, j'en prends note et je lirais ce fameux guide avec intérêt !😄
Cordialement,
Jeanne