Bonjour,
J’ai créé un code dans Apps Script qui normalement doit me récupérer des données sur une feuille Sheets afin de me renseigner un formulaire PDF.
J’ai un soucis car je n’arrive pas à ajouter à la bibliothèque PDF-lib à mon projet Apps Script.
Voici le code que j’ai:
function remplirPDF() {
var nomDuDossier = "CDS25";
var nomDuFichierPDF = "CERFA.pdf";
var nomDeLaFeuille = "Note de frais";
// Mappage spécifique des champs PDF et des cellules de la feuille
var mappingDesChamps = {
"z1": "B6",
"z29": "E3",
"z31": "E4",
"z32": "E5",
"z33": "F5",
"z34": "K33",
"z35": "G35",
"z38": "B5",
"z54": "B5+1" // B5 + 1
};
var dossier = DriveApp.getFoldersByName(nomDuDossier).next();
var fichierPDF = dossier.getFilesByName(nomDuFichierPDF).next();
var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(nomDeLaFeuille);
var donnees = feuille.getDataRange().getValues();
var entetes = donnees[0];
// Charge la bibliothèque PDF-lib
eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib@1.17.1").getContentText());
// Convertit le fichier PDF en tableau de bytes
var contenuPDF = fichierPDF.getBlob().getBytes();
// Charge le PDF avec PDF-lib
var pdfDoc = PDFDocument.load(contenuPDF);
var formulaire = pdfDoc.getForm();
// Parcourt les lignes de données et remplit le PDF
for (var i = 1; i < donnees.length; i++) {
var ligne = donnees[i];
for (var champPDF in mappingDesChamps) {
var nomColonne = mappingDesChamps[champPDF];
var indexColonne = entetes.indexOf(nomColonne);
if (indexColonne !== -1) {
var valeur = ligne[indexColonne];
var champ = formulaire.getTextField(champPDF);
if (champ) {
champ.setText(valeur.toString());
}
}
}
// Sauvegarde le PDF modifié
var pdfBytes = pdfDoc.save();
var nouveauFichierPDF = dossier.createFile(nomDuFichierPDF + "_" + i + ".pdf", pdfBytes, "application/pdf");
// Reinitialise le formulaire pour la prochaine ligne
pdfDoc = PDFDocument.load(contenuPDF);
formulaire = pdfDoc.getForm();
}
Logger.log("PDFs remplis avec succès !");
}
Le message d’erreur :