Page 1 sur 1

Correction de sript

Publié : 20 mars 2024 14:18
par Doudel77
Bonjour,

Je suis nouveau sur ce type de forum, j'espère que mes explications seront suffisantes pour obtenir un peu d'aide.

En m'appuyant sur un tutoriel glané sur le net, j'ai tenté de concevoir un script me permettant de rechercher un identifiant dans un tableau Sheets, ce script doit me permettre de stocker la ligne trouvée dans un tableau afin qu'elle vienne par la suite compléter un formulaire contenu dans un autre onglet. voici mon bout de code qui ne fonctionne pas sachant que lorsque je lance le test j'obtiens ce message :
"Le Numéro de consultation non trouvé : undefined"
Voici mon script :
let plantationPage = spreadsheet.getSheetByName('Plantation');
function getPlantationByRecherche_consultation(recherche_consultation){
  const plantationList = plantationPage.getDataRange().getValues();
 
  let plantation = plantationList.filter(data => {return data[1] == recherche_consultation})[0];
  if(plantation){
    return constructionPlantation(plantation);
  }
  let ui = SpreadsheetApp.getUi();
  ui.alert('Le Numéro de consultation non trouvé :  '+recherche_consultation);
}

function constructionPlantation(plantationArray){
  return new Plantation(
    plantationArray[0],
    plantationArray[1],
    plantationArray[2],
    plantationArray[3],
   
  );
}
function testcode(){
  console.log('Identifiant non trouvé' +JSON.stringify(getPlantationByRecherche_consultation('PL2022-10003/01')))
}
Je devrait obtenir "PL2022-10003/01'" et pas "undefined"

Merci



 

Re: Correction de sript

Publié : 21 mars 2024 09:41
par NC_Quentin
Bonjour !

De ce que j’en vois et de ce que j’ai testé, le code est fonctionnel (j’ai dû rajouter et changer les morceaux qui manquent, et j’ai ignoré la classe Plantation qui a l’air d’avoir été définie ailleurs et qui n’est pas liée au problème). J’ai légèrement réécrit le code, mais dans le fond, rien n’a changé :

Code : Tout sélectionner

function getPlantationByRecherche_consultation(recherche_consultation){
  const plantationPage = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Plantation');
  const plantationList = plantationPage.getDataRange().getValues();
 
  const plantation = plantationList.filter(data => {return data[1] == recherche_consultation})[0];
  if(plantation){
    return constructionPlantation(plantation);
  }
  SpreadsheetApp.getUi().alert('Le Numéro de consultation non trouvé :  '+recherche_consultation);
}
function constructionPlantation(plantationArray){
  SpreadsheetApp.getUi().alert(plantationArray.join(", "));
}
function test(){
  getPlantationByRecherche_consultation("PL2022-10003/01");
}
Lorsque j’exécute la fonction test avec l’éditeur, j’obtiens bien ma ligne de test dans mon Sheets. 

Est-ce que vous exécutez bien la fonction testcode dans l’éditeur ? Si vous exécutez directement la fonction getPlantationByRecherche_consultation, celle-ci est exécutée sans argument, donc recherche_consultation est mis sur undefined, ce qui expliquerait l’erreur que vous avez. C’est la seule explication qui me vient pour le moment.

Re: Correction de sript

Publié : 21 mars 2024 10:36
par Doudel77
Bonjour,
Merci pour cette réponse très complète, je teste tout cela. J'ai une petite question subsidiaire, ce type de recherche, peut-elle être contrecarrée par le type de donnée recherché. Par exemple si la valeur recherchée est donnée comme du texte et que dans le tableau cette donnée est stockée sous la forme numérique.

Merci
Bonne journée

Re: Correction de sript

Publié : 21 mars 2024 10:49
par Doudel77
Après correction du script et un dernier test, la fonction fonctionne car j'ai une réponse négative avec le numéro demandé, mon souci c'est que cet identifiant existe bien, il devrait me répondre avec les données correspondantes.