newDataValidation Does not work properly using REGEXMATCH

45 views
Skip to first unread message

Alessandro Carvalho

unread,
Jul 23, 2025, 11:19:14 AM Jul 23
to Google Apps Script Community

hey guys!

This is my first contact. I am from Brazil.

I found several posts on the topic, but none of them report the problem I'm experiencing.

I have a problem. I made a script to validate a range with a custom formula. Validation is written normally, however all fields are signaled that the value is false.

I edit the validation by hand, include a space in any position in the formula and then I delete the space and save the validation. By doing this, validation starts to work. This shows that the formula is correct.

I suspect that the problem is in the use of REGEXMATCH, but, as I said, the formula works if I edit it by hand.

This is the script:

function validaDataHora() {

var planilha = SpreadsheetApp.getActiveSpreadsheet();

  var aba = planilha.getSheetByName("Exames de Imagem");

   var celula = aba.getRange("H3:I"); // intervalo para aplicar a formula

  var criterio = SpreadsheetApp.DataValidationCriteria.CUSTOM_FORMULA;

   var formula = '=E(isdate(H3);REGEXMATCH(TEXTO(H3;"dd/mm/YYYY HH:MM");"\\d{2}/\\d{2}/\\d{4} (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"))';

  // Remove as validações de dados do intervalo

celula.clearDataValidations();

 var validacao = SpreadsheetApp.newDataValidation()

.withCriteria(criterio, [formula])

      .setAllowInvalid(false)

      .setHelpText('Digite uma data nesse formato: "dd/mm/YYYY HH:MM"')

.build();

   celula.setDataValidation(validacao);

}

Correct formula written in the cells, but It doesn't work

=E(isdate(H3);REGEXMATCH(TEXTO(H3;"dd/mm/YYYY HH:MM");"\d{2}/\d{2}/\d{4} (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"))

How do i fix this?

Thank you if you can help me.

anne marie Gay

unread,
Jul 29, 2025, 4:09:44 AM Jul 29
to google-apps-sc...@googlegroups.com

Salut !

Je pense que le problème vient principalement du formatage de la formule dans le script Google Apps Script, particulièrement en ce qui concerne l'utilisation de REGEXMATCH et TEXT (qui n'est pas une fonction de Google Sheets directement mais qui a été utilisée avec la syntaxe de TEXTO ).

Voici quelques suggestions pour résoudre ce problème :

1. Correction de la formule

  • Fonction TEXT vs TEXTO : Dans Google Apps Script, il faut utiliser TEXT et non TEXTO (qui est la version en portugais de TEXT ). Cela pourrait être la cause de votre problème.

  • La fonction ISDATE : Google Sheets utilise ISDATE pour vérifier si une valeur est une date, mais cette fonction renvoie TRUE pour les dates et FALSE pour les autres valeurs. Vous devrez vous assurer que les cellules contiennent bien une valeur qui est reconnue comme une date dans la formule.

2. Solution

Je vous propose de modifier la formule et de vous assurer que vous utilisez bien les fonctions appropriées. Voici la version corrigée de votre code :

 
javascript
function validaDataHora () { var feuille = SpreadsheetApp . getActiveSpreadsheet (); var aba = feuille. getSheetByName ( "Examens d'image" ); var cellule = aba. getRange ( "H3:I" ); // intervalle pour appliquer une formule var critere = SpreadsheetApp . DataValidationCriteria . CUSTOM_FORMULA ; // Formule mise à jour avec les bonnes fonctions var formule = '=AND(ISDATE(H3), REGEXMATCH(TEXT(H3, "dd/MM/yyyy HH:mm"), "\\d{2}/\\d{2}/\\d{4} (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"))' ; // Supprimer les validations des données de l'intervalle cellule. clearDataValidations (); // Créer la validation avec la formule mise à jour var validation = SpreadsheetApp . newDataValidation () . withCriteria (critere, [formule]) . setAllowInvalid ( false ) . setHelpText ( 'Format requis : "jj/mm/AAAA HH:MM"' ) . build (); // Appliquer la validation sur la plage cellule. setDataValidation (validation); }

Explications des changements :

  1. Utilisation de TEXT(H3, "dd/MM/yyyy HH:mm") : Utilisation de la bonne syntaxe de la fonction TEXT pour formater la date/heure en jj/mm/aaaa hh:mm .

  2. Modification de =E(...) en =AND(...) : La fonction E est utilisée dans la version française de Google Sheets, mais AND est plus standard dans le contexte des scripts Google Apps.

  3. Réparation de la syntaxe: J'ai aussi ajusté la manière dont vous avez référencé la feuille et la cellule.

À vérifier :

  • Assurez-vous que la cellule H3 contient bien une date dans le format attendu (par exemple, 28/07/2025 14:30 ).

  • Vérifiez également que vous appliquez la validation à la plage correcte de cellules.

Cela devrait résoudre votre problème. Est-ce que cela fonctionne mieux maintenant ?


--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com .
To view this discussion visit https://groups.google.com/d/msgid/google-apps-script-community/eace2825-85d1-49db-9d2e-7d8d4b88a4ddn%40googlegroups.com .

Alessandro Carvalho

unread,
Aug 3, 2025, 5:26:44 AM Aug 3
to google-apps-sc...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages