Validation avec regex via app script

Yeps !

Dans une feuille d'un classeur Sheet, je fais une validation de données avec regexmatch sur la plage B5:K5. Ma formule est =regexmatch(B5;"^[0:9]{2}:[0-9]{2}$").
La formule fonctionne, mais ce que je voudrais faire au final, c'est générer cette validation de données par l'intermédiaire d'un script.
Si quelqu'un pouvait me mettre sur la piste, ce serait sympa
Belle journée !

Bonjour,

pourquoi "^[0:9]{2}:[0-9]{2}$" et non "^[0-9]{2}:[0-9]{2}$" ?

Pour moi cela ne fonctionne que si le format de la zone est texte, sinon GSheets interprètera cela comme une heure, donc un nombre décimal

function valider() {
  var f = SpreadsheetApp.getActive();
  f.getRange('B5:K5').activate();
  f.getRange('B5:K5').setDataValidation(SpreadsheetApp.newDataValidation()
  .setAllowInvalid(true)
  .requireFormulaSatisfied('=regexmatch(B5;"^[0-9]{2}:[0-9]{2}$")')
  .build());
};

[0:9] était une faute de frappe ;-)

Avec la plage au format texte, c'est parfait. Merci !
En somme, j'avais essayé avec l'enregistreur de macro et j'avais constaté que la formule n'était pas reproduite dans le script. Et finalement, il suffit de venir retranscrire la formule adéquate entre les parenthèses de "requireFormulaSatisfied" une fois que la macro est enregistrée.

Ma question maintenant est pourquoi cette validation qui requiert aussi que la zone soit textuelle ? je suppose alors que tu en fais une retranscription en heures et minutes ?

Le but est effectivement d'encoder le résultat d'un test de course en min:sec. Mais comme il n'y a aucun calcul ni graphique à faire sur ces données, je trouvais plus simple de forcer l'encodage de cette manière. Il s'agit d'un élément d'un fichier "élève" qui reprend une dizaine de tests qui sont évalués sur les 6 années d'étude secondaire. Chaque prof de sport gère ses propres fichiers et il me semblait judicieux d'imposer un format d'encodage.
Sinon pour encoder un temps en min:sec, je serais obligé d'encoder par exemple 0:23:46 qui s'afficherait sous la forme 23:46 dès le moment où le format de la cellule est min:sec ...
Au départ, j'ai un script qui génère un fichier Sheet par élève à partir d'une liste. Chaque fichier se présente comme ceci :

image

ok, ma curiosité est satisfaite !

c'est en effet assez intelligent comme système (et si nécessaire, la transformation pour calcul est toujours possible)

on aurait même pu éviter 6, 7, 8 et 9 en dixièmes de minutes et secondes, comme ceci

"^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$"
Rechercher des sujets similaires à "validation regex via app script"