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
application/pdf
. 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
.pdf
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
UrlFetchApp
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
UrlFetchApp.fetch
est un blob PDF que vous pouvez ensuite envoyer par email.Notez que vous devez remplacer
'*********@gmail.com'
par l’adresse email du destinataire. Assurez-vous également que les autorisations nécessaires sont accordées à votre script pour exécuter
UrlFetchApp
et envoyer des emails.
PS : évite un ça marche pas, ça me ferait super plaisir vu le temps passé 