Script réduire temps et alléger .pdf

Bonjour à tous,

J'ai ce script récupérer en parti sur ce forum qui me permet de transformer en .pdf et d'enregistrer dans le dossier voulu une feuille de gsheet. Il fonctionne bien mais est assez long et surtout les pdf pèsent 6 mo pour une page A4 !!! que puis-je modifier ?
merci d'avance pour l'aide

@ bientôt

Marc

function SavePDF(){
// SÉLECTIONNER LA FEUILLE A SAUVEGARDER
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//URL de SS ?
var ssUrl = ss.getUrl();
var sheetId= sheet.getSheetId();
var url = ssUrl.replace(/\/edit.*$/,'')
+ '/export?exportformat=pdf&format=pdf'
+ '&size=A4'
+ '&portrait=true'
+ '&fitw=true'
+ '&top_margin=0.50'
+ '&bottom_margin=0.50'
+ '&left_margin=0.50'
+ '&right_margin=0.50'
+ '&sheetnames=false'
+ '&printtitle=false'
+ '&pagenum=false'
+ '&gridlines=false'
+ '&fzr=FALSE'
+ '&gid='+sheetId;
// RÉCOLTER LES INFORMATIONS DANS LE SHEET POUR COMPOSER LE NOM DU DOCUMENT
var docId = sheet.getRange('B22').getValue();var docId1 = sheet.getRange('B23').getValue();var docId2 = ' - ' +sheet.getRange('G15').getValue();var date = docId1;var options = {day: '2-digit', month: '2-digit', year: 'numeric'};var docId1 = ' - ' + date.toLocaleDateString('fr-FR', options);

//mise en forme de la date : mois-annee
// Concaténons le tout
var docName = "Facture: " + docId + docId1 + docId2;
// CRÉER LE PDF A PARTIR DE L'URL var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' + token } });
var pdf = docurl.getAs('application/pdf').setName(docName);
var file = DriveApp.createFile(pdf);
var folder = DriveApp.getFolderById("1AZHlc8LgNublWNbJxIa6wD2CEodRnjf1");
var finalFile = file.moveTo(folder);
//RÉCUPÉRER LE LIEN
//var docUrl = finalFile.getUrl();
//ajouter l'urL dans la GED.
//var sheetGed = ss.getSheetByName('Test');
//sheetGed.appendRow([new Date(),docId,docUrl,docName]);
// ANNONCER LA RÉUSSITE DE CRÉATION DU DOCUMENT
var ui = SpreadsheetApp.getUi();
ui.alert('La feuille a bien été sauvegardée dans le Drive sous le nom:\n\n'+ docName);
}

Je complète par une découverte ...
Quand je recherche le pdf généré dans le drive il apparait bien comme un .pdf
MAIS la version synchronisé sur mon ordi n'a pas le ".pdf" après son nom !!!

pbpdf

J'arrive à l'ouvrir en allant chercher foxit reader !!
Je ne comprends pas !!! HELP

Bonjour,

Votre script ne comporte pas d'erreur et je ne vois pas ce qui peut le faire ralentir, j'utilise moi-même des scripts similaires.

Concernant le poids, il faut voir dans votre feuille ce qui peut causer ce problème (nombre de lignes de la feuille, images, formules, calculs), je pense que cela est lié au temps d'exécution, il y a quelque chose qui ralentit le script et génère du poids.

Concernant l'extension, si dans votre drive, c'est bien en PDF, c'est votre téléchargement qui pose problème.

Bonjour,

merci pour le retour.

Mais il doit bien y avoir un problème, le fichier n'a pas d'extension après son nom! Drive le reconnait comme un ;pdf mais pas windows.

Pour la lenteur, pas très grave même si j'ai d'autres scripts plus complexes, sur des feuilles plus chargées qui sont bien plus rapide ....

Le poids reste un problème et j'espère que quelqu'un poura m'aider à corriger ce script.
@+

Bien cordialement

Marc

Je viens de tester votre scrpit, ça a pris quelques secondes et le fichier pdf ne fait que 15 Ko :

screenshot 2023 05 05 16 20 11 screenshot 2023 05 05 16 20 01

Merci pour le retour
J'ai compressé une image qui était sur la feuille et effectivement ça réduit drastiquement le poids je suis à 440 ko, raisonnable !
La vitesse ne bouge pas ... et comme dit précédemment j'ai des scripts bien plus rapides ....
Mais mon "gros" problème est le manque de .pdf
Avez-vous rencontré le même problème lors de votre test ?

Merci encore

Cordialement

Marc

Bonjour,

Essayez de d'uploader un PDF dans votre drive et voyez sur votre navigateur si l'extension s'affiche ou non ?

Bonjour,

il manquait" .pdf" sur cette ligne

var docName = "Facture: " + docId + docId1 + docId2 + ".pdf";

ce problème est résolu maintenant.

Reste le temps d'exécution qui est un poil long mais rien de rédhibitoire ...mais je pense qu'une "amélioration" est possible

Merci pour l'aide, très bonne journée

Bien cordialement

Marc

Rechercher des sujets similaires à "script reduire temps alleger pdf"