[Gsheet][Appscript][Form][Date][Format ???]

Bonjour,

Après validation d'un formulaire en html j’exécute des action pour remplir le tableau.

Voici mon code :

function addpersonel(form_data)
{

var nom = form_data.NOM;
var prenom = form_data.PRENOM;
var equipe = form_data.EQUIPE;
var contrat = form_data.CONTRAT
var poste = form_data.POSTE
var debut = form_data.DATE_DEBUT;
var fin = form_data.DATE_FIN;

var ss =SpreadsheetApp.getActiveSpreadsheet();
var bddPersonel = ss.getSheetByName('BDD PERSONEL');
var bddPresence = ss.getSheetByName('BDD PRESENCE');
var derniereligne = bddPersonel.getLastRow();

bddPersonel.getRange(derniereligne +1,1).setValue(nom);
bddPersonel.getRange(derniereligne +1,2).setValue(prenom);
bddPersonel.getRange(derniereligne +1,3).setValue(debut);
bddPersonel.getRange(derniereligne +1,4).setValue(fin);
bddPersonel.getRange(derniereligne +1,5).setValue(contrat);
bddPersonel.getRange(derniereligne +1,7).setValue(equipe);
bddPersonel.getRange(derniereligne +1,9).setValue(poste);

//Generation de l'id
const date = new Date();
var id = Utilities.formatDate(date, 'Etc/GMT', 'yyyyMMddHHmmss');
bddPersonel.getRange(derniereligne +1,6).setValue(id);

//Recherche de la collone du debut

var formatdatedebut = (Utilities.formatDate(form_data.DATE_DEBUT, 'Etc/GMT', 'dd/MM/yyyy'));
var collonedebut = bddPresence.getRange('1:1').createTextFinder(formatdatedebut).findNext().getColumn();
var derniereligne = bddPresence.getLastRow();
bddPresence.getRange(derniereligne +1,collonedebut).setValue("P");

}
Je dois rechercher dans le classeur présence la colonne correspondante a l'input date de début.

Lors des log la date récupérer est dans un autre format d'où l'utilisation de formatdate qui ne fonctionne pas.

Malheureusement, j'obtiens une erreur :
21 juin 2022, 11:04:26    Erreur    Exception: Les paramètres (String,String,String) ne correspondent pas à la signature de la méthode "Utilities.formatDate".
    at addpersonel(GETFORM:32:34)

Merci d'avance pour votre aide.

Cordialement.

Bonjour,

je suppose que les dates de la première ligne sont en format dd/MM/yyyy

si l'erreur est sur Utilities.formatDate, alors essaie

var formatdatedebut = (Utilities.formatDate(new Date(form_data.DATE_DEBUT), 'GMT', 'dd/MM/yyyy'));

ensuite, essaie d'utiliser getDisplayValues() et

var collonedebut = bddPresence.getRange('1:1').getDisplayValues().flat().indexOf(formatdatedebut) + 1

écrirais volontiers colonneDebut

Bonjour,

Merci pour votre réponse.

Super cela fonctionne :

Si j'ai bien compris, nous avons redéfini le résultat du formulaire pour le retransformer en date.

L'input date en html ne se suffit donc pas.

Merci beaucoup.

Ps : oui, les var seront remise au propre :)

peux-tu faire un

console.log (form_data.DATE_DEBUT
console.log (Utilities.formatDate(form_data.DATE_DEBUT, 'Etc/GMT', 'dd/MM/yyyy'))

sinon peux-tu partager un extrait pertinent du fichier ?

nota : j'ai essayé de mon côté avec une date formatée et ma proposition fonctionne, donc je suspecte que les données en provenant du formulaire html ne soient pas de vraies dates (?)

Rechercher des sujets similaires à "gsheet appscript form date format"