Bonsoir à tous,
mon code est le suivant :
function exportAndSendPDF() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TABLEAU ETAT DE STOCK");
var range = sheet.getActiveRange();
var values = range.getValues();
var dataString = values.toString();
var blob = Utilities.newBlob(dataString, "application/pdf");
var date = new Date();
var year = date.getFullYear();
var month = String(date.getMonth() + 1).padStart(2, '0'); // Zero-pad for consistency
var day = String(date.getDate()).padStart(2, '0');
var fileName = 'ETAT DE STOCK' + year + month + day + '.pdf';
// Create the file with correct argument order:
var file = DriveApp.createFile(fileName, blob); // Pass fileName first, then blob
// Envoyer l'e-mail
var message = 'Votre fichier PDF est joint à cet e-mail.';
MailApp.sendEmail('*********@gmail.com', 'Sujet de l\'e-mail', message, {
attachments: [file]
});
}
il marche parfaitement, il enregistre le fichier pdf dans drive, il envoie l'email, mais à la reception le fichier est endommagé et ne s'ouvre pas.
veuillez me corriger ce code .
merci
Fichier PDF endommagé à la lecture Le sujet est résolu
- S C transcontinental
- Messages : 3
- Inscription : 05 févr. 2024 20:41
-
- Invétéré
- Messages : 132
- Inscription : 11 sept. 2022 20:27
- A remercié : 3 fois
- Remercié : 23 fois
Re: Fichier PDF endommagé à la lecture
Hello
Juste choqué par cette phrase : veuillez me corriger ce code .
Ici c'est un forum gratuit. Est ce qu'un minimum de politesse ne serait pas un peu plus sympa à destination des personnes qui vont te lire et te répondre ?
Même avec Chat GPT je suis plus poli.Le problème que vous rencontrez est probablement dû à la manière dont vous créez le fichier PDF. Dans votre script, vous convertissez les données de votre feuille de calcul en une chaîne de caractères, puis vous créez un blob à partir de cette chaîne en spécifiant le type MIME comme. Cependant, cette approche ne convertit pas réellement vos données en un format PDF valide. Au lieu de cela, elle crée simplement un fichier avec l'extension contenant les données textuelles, d'où l'erreur d'ouverture du fichier comme un PDF valide.Pour générer un PDF à partir d'une feuille de calcul Google Sheets et l'envoyer par email, vous devez d'abord exporter la feuille au format PDF en utilisant les fonctionnalités d'exportation de Google Sheets, puis attacher ce fichier PDF à votre email. Voici une approche corrigée pour votre fonction :function exportAndSendPDF() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("TABLEAU ETAT DE STOCK");
var url = spreadsheet.getUrl().replace(/edit$/, '') + 'export?exportFormat=pdf&format=pdf' +
'&size=letter' + // Taille du papier
'&portrait=true' + // Orientation du papier
'&fitw=true' + // Largeur de page ajustée
'&sheetnames=false&printtitle=false' + // Options d'en-tête
'&pagenumbers=false&gridlines=false' + // Options de pied de page
'&fzr=false' + // Répéter les lignes gelées
'&gid=' + sheet.getSheetId(); // ID de la feuille spécifique à exporter
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(url, options);
var blob = response.getBlob().setName('ETAT DE STOCK' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMdd") + '.pdf');
// Enregistrement du fichier dans Google Drive (facultatif)
var file = DriveApp.createFile(blob);
// Envoyer l'e-mail
var message = 'Votre fichier PDF est joint à cet e-mail.';
MailApp.sendEmail('*********@gmail.com', 'Sujet de l\'e-mail', message, {
attachments: [blob]
});
}
Cette version modifiée de votre fonction utilise pour appeler l'URL d'exportation de Google Sheets qui génère le PDF. L'URL est construite avec les options d'exportation pour personnaliser la sortie PDF selon vos besoins (taille du papier, orientation, etc.). Le jeton d'autorisation OAuth est utilisé pour l'authentification. La réponse de est un blob PDF que vous pouvez ensuite envoyer par email.Notez que vous devez remplacer par l'adresse email du destinataire. Assurez-vous également que les autorisations nécessaires sont accordées à votre script pour exécuter et envoyer des emails.
----
PS : évite un ça marche pas, ça me ferait super plaisir vu le temps passé
Juste choqué par cette phrase : veuillez me corriger ce code .
Ici c'est un forum gratuit. Est ce qu'un minimum de politesse ne serait pas un peu plus sympa à destination des personnes qui vont te lire et te répondre ?
Même avec Chat GPT je suis plus poli.Le problème que vous rencontrez est probablement dû à la manière dont vous créez le fichier PDF. Dans votre script, vous convertissez les données de votre feuille de calcul en une chaîne de caractères, puis vous créez un blob à partir de cette chaîne en spécifiant le type MIME comme
Code : Tout sélectionner
application/pdf
Code : Tout sélectionner
.pdf
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("TABLEAU ETAT DE STOCK");
var url = spreadsheet.getUrl().replace(/edit$/, '') + 'export?exportFormat=pdf&format=pdf' +
'&size=letter' + // Taille du papier
'&portrait=true' + // Orientation du papier
'&fitw=true' + // Largeur de page ajustée
'&sheetnames=false&printtitle=false' + // Options d'en-tête
'&pagenumbers=false&gridlines=false' + // Options de pied de page
'&fzr=false' + // Répéter les lignes gelées
'&gid=' + sheet.getSheetId(); // ID de la feuille spécifique à exporter
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(url, options);
var blob = response.getBlob().setName('ETAT DE STOCK' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMdd") + '.pdf');
// Enregistrement du fichier dans Google Drive (facultatif)
var file = DriveApp.createFile(blob);
// Envoyer l'e-mail
var message = 'Votre fichier PDF est joint à cet e-mail.';
MailApp.sendEmail('*********@gmail.com', 'Sujet de l\'e-mail', message, {
attachments: [blob]
});
}
Cette version modifiée de votre fonction utilise
Code : Tout sélectionner
UrlFetchApp
Code : Tout sélectionner
UrlFetchApp.fetch
Code : Tout sélectionner
'*********@gmail.com'
Code : Tout sélectionner
UrlFetchApp
----
PS : évite un ça marche pas, ça me ferait super plaisir vu le temps passé
- S C transcontinental
- Messages : 3
- Inscription : 05 févr. 2024 20:41
Re: Fichier PDF endommagé à la lecture
Je vous remercie infiniment pour votre aide précieuse. Je suis profondément désolé(e) si ma phrase "veuillez me corriger ce code" vous a offensé. Je n'avais aucune intention de vous manquer de respect et je vous prie de bien vouloir me pardonner.
Rejoignez la discussion 💬
Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres
Inscrivez-vous dès aujourd'hui
Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles
Inscription