Fichier de commande envois automatique + pdf

Bonjour,

Point par point :

erreur en ligne 87

il semble que "urldossier " n 'est pas définit

pourtant je le récupère "urldossier " dans la fonction "validerlacommande" en ligne 48

validerlacommandesansenvoismail a comme unique but de lancer : validerlacommande avec false comme argument pour l'envoi du mail vu que tu débute par cette fonction tu ne peux pas mettre de tel argument, urldossier est créé DANS validerlacommande, ainsi tu mets la roue avant les boeufs, ce qu'il faut faire c'est récuprer urldossier une fois validerlacommande terminé.

change ceci :

/**
 * Valide la commande sans envoyer d'email.
 * @param {string} urldossier - URL à ouvrir.
 */
function validerlacommandesansenvoismail(urldossier) {
  console.log("lancement de la fonction validerlacommandesansenvoismail")

  validerlacommande(false);

var ui = SPREADSHEETApp.getUi();
var response = ui.alert('⚙️OUVRIR LE DOSSIER POUR GLISSER DES PIECES',urldossier,ui.ButtonSet.YES_NO);
 //Process the user's response.
if (response == ui.Button.YES) {linkOpen(urldossier)}
else if (response == ui.Button.NO) {SPREADSHEETApp.getActive().getSheetByName('2024').showSheet().activate()} 
}

Et ceci :

/**
 * Valide la commande sans envoyer d'email.
 */
function validerlacommandesansenvoismail() {
  console.log("lancement de la fonction validerlacommandesansenvoismail")

var urldossier = validerlacommande(false);
console.log("urldossier = "+urldossier)

var ui = SPREADSHEETApp.getUi();
var response = ui.alert('⚙️OUVRIR LE DOSSIER POUR GLISSER DES PIECES',urldossier,ui.ButtonSet.YES_NO);
 //Process the user's response.
if (response == ui.Button.YES) {linkOpen(urldossier)}
else if (response == ui.Button.NO) {NEWLIGNESCHRONO.showSheet().activate()} 
}

Ensuite :

lors de l'application de la fonction "validerlacommandel"

erreur en ligne 142 la j 'ai une erreur mais je ne sais pas pourquoi d 'ailleurs comment fait ont pour connaitre précisément les erreur ??

Il n 'existe pas un tuto expliquant les onglet de gauche et la présentation générale de script ??

Alors, pour voir les erreur il faut dans l'écran Apps Script aller a gauche dans executions, puis, là tu vois toutes les exectutions, chaque nom de fonction et son état.

Sache que les console.log() s'affichent ici.

Donc, par exemple pour validerlacommande :

image

L'erreur provient dans la fonction envoismail, je t'ai ajouté un log :

console.log("email = "+email)

afin de voir a quel email c'est envoyé, vérifie si l'url est correcte aussi.

punaise il y a un truc que je comprend pas la

Dans la fonction validelacommande

je met en constant urldossier donc je dois l 'avoir dans tous mes fonctions suivant ?

/**
 * Valide la commande sans envoyer d'email.
 * @param {string} urldossier - URL à ouvrir.
 */
function validerlacommandesansenvoismail(urldossier) {
  console.log("lancement de la fonction validerlacommandesansenvoismail")

  validerlacommande(false);  //ici je récupère urldossier

var ui = SPREADSHEETApp.getUi();
var response = ui.alert('⚙️OUVRIR LE DOSSIER POUR GLISSER DES PIECES',urldossier,ui.ButtonSet.YES_NO);
 //Process the user's response.
if (response == ui.Button.YES) {linkOpen(urldossier)}
else if (response == ui.Button.NO) {SPREADSHEETApp.getActive().getSheetByName('2024').showSheet().activate()} 
}

je rebondis sur un poste précèdent

l 'idée du formulaire ou de la sidebar semble réalisable et intéressante bien que je vais perdre mes cheveux

surtout sur la définition des achat de produit dans la commande !!

n 'est il pas possible de crée un onglet commande par utilisateur et ainsi nous pourrons faire des onglet commande au même moment ?

Concernant la portée des variables, simplement :

const POMME = 3.50; 

function triFruits (){
  ....
 .... 
... 
 var poire = 4.10;
...
....
var fraise = 8.70:
....
....
return fraise;
}

Dans cet exemple POMME est dans la portée (ou scope) global, partout, on peut y accéder, car comme tu peux le voir, elle est en dehors de toute fonction.

Ensuite, poire est accessible uniquement dans la fonction triFruits car elle est déclarée dans celle ci, on ne peut pas y acceder autre part.

Il en va de même pour fraise, sauf que triFruits return fraise, ainsi, on peu récuperer fraise dans un autre endroit au besoin, par exemple je peux faire :

function facturation(){
....
resultatTri = triFruit();
....
}

resultatTri sera = à 8.70

MERCI pour le coup de main a PIERRELEPINAY

dernier sujet j 'ai définit le blob

en ligne 199

const pdf = response.getBlob().setName(nomFichier);

J ai mis un return pdf dans pour function envoismail(nomFichier, pdf)

Par contre j 'ai pas compris

mais lorsque je récupère l 'URL du PDF crée en ligne 206 je dois tous de suite la copie la valeur de crée dans ma page chrono général

NEWLIGNESCHRONO.getRange('P5').setValue(urlpdf);

je ne peu pas écrire ce code

NEWLIGNESCHRONO.getRange('P5').setValue(urlpdf);

en ligne 66 ( le nom est BLOB !! )

bref il n 'est pas possible de retourner plusieurs valeur avec "return", ca s 'écrit comment ?

Rechercher des sujets similaires à "fichier commande envois automatique pdf"