Problème "pop" dans script

Bonjour à tous,

j'utilisais jusqu'ici le script suivant pour faire des sommes en fct des couleurs des plages, ou compter le nbre de plages colorées. Mais depuis quelque jours le script ne marche plus car l'attribut pop n'est plus reconnu...quelqu'un sait ce qu'il faut changer? Merci infiniment!

function SommeCouleurs(plage,couleur) {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formule = activeRange.getFormula();

  var laplage = formule.match(/\((.*)\;/).pop();
  var range = activeSheet.getRange(laplage);
  var bg = range.getBackgrounds();
  var values = range.getValues();

  var lacouleur = formule.match(/\;(.*)\)/).pop();
  var colorCell = activeSheet.getRange(lacouleur);
  var color = colorCell.getBackground();

  var total = 0; 

  for(var i=0;i<bg.length;i++)
    for(var j=0;j<bg[0].length;j++)
      if( bg[i][j] == color )
      total=total+(values[i][j]*1);
  return total;     

};

function CompteCouleurs(plage,couleur) {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formule = activeRange.getFormula();

  var laplage = formule.match(/\((.*)\;/).pop();
  var range = activeSheet.getRange(laplage);
  var bg = range.getBackgrounds();
  var values = range.getValues();

  var lacouleur = formule.match(/\;(.*)\)/).pop();
  var colorCell = activeSheet.getRange(lacouleur);
  var color = colorCell.getBackground();

 var count = 0;

  for(var i=0;i<bg.length;i++)
    for(var j=0;j<bg[0].length;j++)
      if( bg[i][j] == color )
      count=count+1;
      return count;
}

Bonjour ces fonctions fonctionnent très bien !!!

le problème n'est pas dans le code

20210203 151412 001

petit code pour contrôler pop et match

//petits tests pour controler match et pop
function test(){
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formule = "exemple de txt de formule(adresses:des cellules;second_critère)"
  console.log(formule);
  var laformule = formule.match(/(.*)\(/).pop();
  console.log(laformule);
  var laplage = formule.match(/\((.*)\;/).pop(); // 
  console.log(laplage);
  var lacouleur = formule.match(/\;(.*)\)/).pop();
  console.log(lacouleur);
  lacouleur = "E4" //vérifier que E4 ait bien une couleur de background
  var colorCell = activeSheet.getRange(lacouleur);
  var color = colorCell.getBackground();
  var scolor = colorCell.getFontColor();
  console.log(color); 
  console.log(scolor); 

}

Merci Gilbert...cependant j'obtiens cette erreur alors qu'avant les formules marchaient :

capture d e cran 2021 02 03 a 18 32 32
capture d e cran 2021 02 03 a 18 33 01

ne peut lire la propriété de pop de null

il faut mettre une couleur de Background d'une cellule par exemple

quelle est la formule employée ??

normalement ces fonctions sont précédées de commentaires permettant d'avoir une aide

du type

/**

* Permet de sommer le contenu des cellules de même couleur.

* Pour réinitialiser les fonctions changer une valeur dans une cellule de la plage de calcul

* @constructor

* @param {$A$1:$E$10} range - plage à calculer.

* @param {E1} color ref - cellule dont le background est la référence de couleur.

* @return La somme des cellules de même couleur.

* @customfunction

*/

Merci Gilbert, j'ai compris d'où venait le pb, pas de la formule elle meme en effet! Merci

Rechercher des sujets similaires à "probleme pop script"