Problème avec un formulaire
Bonjour, j'ai un petit problème. Si je modifie la colonne 22 ça me lance le formulaire modification. Par contre quand je modifie la colonne 28, rien ne se passe. Je pense que ça vient de mon formulaire mais je ne trouve pas ou !
// variables :
const nomBdd = 'Commandes' // nom de la feuille base de données
//const nomFiltre = 'BdD_filtrée' // nom de la feuille filtre
const col = 222 ; // colonne à partir de laquelle les données sont enregistrées pour le lavoir
const col1 = 230 ; // colonne à partir de laquelle les données sont enregistrées pour les barnums
const bdd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(nomBdd);
function checkEdit(e) {
const sheet = e.range.getSheet();
const sheetName = sheet.getName();
const value = e.value;
const column = e.range.getColumn();
const ligneModifiee = e.range.getRow();
if (sheetName === "Commandes" && column === 22 && value > 0) {
PropertiesService.getScriptProperties().setProperty('ligneModifiee', ligneModifiee);
const html = HtmlService
.createTemplateFromFile('formModification')
.evaluate()
.setWidth(400)
.setHeight(500);
SpreadsheetApp.getUi().showModelessDialog(html, 'Renseignements pour location lavoir');
}else if(sheetName === "Commandes" && column === 28 && value >= 1 && value <= 4) {
PropertiesService.getScriptProperties().setProperty('ligneModifiee', ligneModifiee);
const html = HtmlService
.createTemplateFromFile('formlocationbarnums')
.evaluate()
.setWidth(400)
.setHeight(500);
SpreadsheetApp.getUi().showModelessDialog(html, 'Renseignements pour location Barnum');
}
}
// formulaire lecture - modification
/*function modifier() {
//SpreadsheetApp.getUi().alert('La ligne ' + ligneModifiee + ' a été modifiée.');
if (numLigne()<=1){
//Browser.msgBox('Sélectionner une ligne en colonne A !')
}else{
const html = HtmlService
.createTemplateFromFile('formModification')
.evaluate()
.setWidth(400)
.setHeight(785);
SpreadsheetApp.getUi().showModelessDialog(html, 'Modifier');
}
}*/
// transfert de la liste des contacts dans les formulaires pour les listes déroulantes
function transfererContacts(){
return SpreadsheetApp.getActiveSpreadsheet().getRange("contacts").getValues()
}
// transfert du ouinon dans les formulaires pour les listes déroulantes
function ouinon(){
return SpreadsheetApp.getActiveSpreadsheet().getRange("ouinon").getValues()
}
// transfert du montage_barnums les formulaires pour les listes déroulantes
function montage_barnums(){
return SpreadsheetApp.getActiveSpreadsheet().getRange("montage_barnums").getValues()
}
// transfert des données de la base de données vers le formulaire modification
function transfererData() {
var ligne = numLigne()
return bdd.getRange(ligne,col,1,bdd.getLastColumn()-col+1).getValues()
}
// transfert des données de la base de données vers le formulaire locationbarnums
function transfererData1() {
var ligne = numLigne()
return bdd.getRange(ligne,col1,1,bdd.getLastColumn()-col1+1).getValues()
}
// numéro de la ligne correspondant la la première case cochée colonne A
// pour transférer les données vers le formulaire modification
// pour enregistrer les données issues de la feuille modification
// pour indiquer au formulaire en commentaire du bouton le n° de ligne en cours de visualisation
function numLigne(){
var f = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
//var values = f.getRange('A2:A').getValues().join().split(",");
//var ligne = values.indexOf('true') + 2;
//var ligne = ligneModifieeGlobale;
//var ligne = 16
var ligne = PropertiesService.getScriptProperties().getProperty('ligneModifiee');
if (ligne) {
return parseInt(ligne); // Convertir en nombre entier
} else {
// Si ligneModifiee n'est pas définie, utiliser une valeur par défaut ou un autre calcul
return 17; // Ou un autre calcul pour déterminer la ligne
}
if (f.getName()==nomBdd){return ligne}else if(f.getName()==nomFiltre){return f.getRange(ligne,2).getValue()}else{return 0}
}
// ajout des données en provenance du formulaire création
/*function ajouterLigne(tab) {
var ligne = bdd.getLastRow() + 1
bdd.getRange(ligne,col,1,tab.length).setValues([tab])
}*/
// modification des données en provenance du formulaire modification
function modifierLigne(tab) {
var ligne = numLigne()
bdd.getRange(ligne,col,1,tab.length).setValues([tab])
}
// modification des données en provenance du formulaire locationbarnums
function modifierLigne1(tab) {
var ligne = numLigne()
bdd.getRange(ligne,col1,1,tab.length).setValues([tab])
}
// permet d'inclure dans les formulaires un autre fichier html, css.html en l'occurence
function rapatrier(filename){
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
<!DOCTYPE html>
<html>
<head>
<?!= rapatrier('css') ?>
</head>
<body>
<script>
<?
var data = transfererData1();
var montage_barnums = montage_barnums();
var ligne = numLigne();
?>
</script>
<form>
<p><strong>Objet de la location </strong></p>
<input type="text" name="objet" value="<?= data[0][0] ?>" placeholder="Objet">
<p><strong>A partir de </strong></p>
<input type="text" name="Nombre" value="<?= data[0][1] ?>" placeholder="A partir de">
<p><strong>Jusqu'à </strong></p>
<input type="text" name="email" value="<?= data[0][2] ?>" placeholder="Jusqu'à">
<p><strong>Nom du monteur </strong></p>
<select name="contact">
<option value="" disabled selected >Selectionner ...</option>
<? for (var i = 0; i < montage_barnums.length; i++) { ?>
<option value="<?= montage_barnums[i][0] ?>" <?= ((contacts[i][0]==data[0][3])?'selected':'') ?> ><?= montage_barnums[i][0] ?></option>
<? } ?>
</select>
<p><strong>Adresse </strong></p>
<input type="text" name="Adresse" value="<?= data[0][4] ?>" placeholder="Adresse">
<input type="button" value="Valider" onclick="modifier()">
</form>
<script>
function modifier() {
var donnees = document.forms[0]
var tab = []
for (var i=0;i<donnees.length;i++){
if (donnees[i].type != "button"){
tab.push(donnees[i].value)
}
}
if (tab.join('') == '') {
alert('Le formulaire est vide !');
return;
}
var d = new Date()
tab.push(d.toString())
google.script.run
.withSuccessHandler(function() {
google.script.host.close();
})
.modifierLigne1(tab);
}
</script>
</body>
</html>Salut, quand tu modifies ta colonne 22 ça lance ceci :
if (sheetName === "Commandes" && column === 22 && value > 0) {
PropertiesService.getScriptProperties().setProperty('ligneModifiee', ligneModifiee);
const html = HtmlService
.createTemplateFromFile('formModification')Et quand tu modifies ta colonne 28 ça lance ceci :
if(sheetName === "Commandes" && column === 28 && value >= 1 && value <= 4) {
PropertiesService.getScriptProperties().setProperty('ligneModifiee', ligneModifiee);
const html = HtmlService
.createTemplateFromFile('formlocationbarnums')Est-ce que tu as bien un fichier html "formlocationbarnums.html" ?
Oui j'ai bien ce fichier html. C'est le code à partir de <!DOCTYPE html>
Ok, déjà, verifie si ta condition est bien remplie :
if(sheetName === "Commandes" && column === 28 && value >= 1 && value <= 4) {
console.log("TEST OK")
PropertiesService.getScriptProperties().setProperty('ligneModifiee', ligneModifiee);
const html = HtmlService
.createTemplateFromFile('formlocationbarnums')
.evaluate()
.setWidth(400)
.setHeight(500);
SpreadsheetApp.getUi().showModelessDialog(html, 'Renseignements pour location Barnum');
}else{console.log("TEST NOT OK sheetName : "+sheetName+" colonne : "+column+" value : "+value)}Ensuite, vérifie dans les exécutions s'il y a des erreurs.
J'ai mis le console log, aucun message d'erreur, mais le formulaire ne se lance pas. J'ai essayé en changeant le nom du formulaire que j'appelle (formModification), et la ça fonctionne, c'est pour ça que je dit que je pense que ça vient du formulaire mais ou ????
Pardon j'ai une erreur !
29 oct. 2024, 14:21:45DébogageTEST OK29 oct. 2024, 14:21:45ErreurTypeError: montage_barnums is not a function
at eval([unknown file]:10:31)
at eval([unknown file]:59:3)
at checkEdit(macros:539:12)
Petite avancée : j'ai enlevé la variable montage_barnums et la sélection qui y faisait réference dans formmontage_barnums.html, et le formulaire se lance.
ce doit être la liste qui ne fonctionne pas,mais pourquoi ?
dans formlocationbarnums.html
Le problème est que tu essayes d'ouvrir un fichier qui n'existe pas.
if (sheetName === "Commandes" && column === 22 && value > 0) {
PropertiesService.getScriptProperties().setProperty('ligneModifiee', ligneModifiee);
const html = HtmlService
.createTemplateFromFile('formModification')
.evaluate()
.setWidth(400)
.setHeight(500);
SpreadsheetApp.getUi().showModelessDialog(html, 'Renseignements pour location lavoir');Ce script lance le fichier html formModification dans une nouvelle fenêtre.
else if(sheetName === "Commandes" && column === 28 && value >= 1 && value <= 4) {
PropertiesService.getScriptProperties().setProperty('ligneModifiee', ligneModifiee);
const html = HtmlService
.createTemplateFromFile('formlocationbarnums')
.evaluate()
.setWidth(400)
.setHeight(500);
SpreadsheetApp.getUi().showModelessDialog(html, 'Renseignements pour location Barnum');
}Et ce script lance le fichier formlocationbarnums dans une nouvelle fenêtre, si ce fichier n'existe pas, bah ça fait une erreur et rien ne se lance.
Le fichier se lance quand je supprime la variable montage_barnums. Donc il existe bien. Le problème est ailleurs
