Soucis avec script google sheet -> pdf - > google drive

Bonjour,
j'ai un petit soucis de génération de pdf sous google sheet.

Pour résumer, j'ai un tableur avec un onglet Facture auto, et des onglets mois (janvier février ect...)
Dans les onglets mois j'ai des données de facturations (numero de facture, nom, date, montant ect...)

Dans l'onglet Facture Auto, j'ai une jolie facture préformatée vierge. la partie "à imprimer" de la facture se trouve dans la plage A1:J30. Elle n'est pas directement éditable.(cellule protégée)
Dans cet onglets en colonne K je peux entrer des données. exemple si j'entre un numéro de facture en K3, la facture s'autoremplis en allant chercher dans mon fichier les infos correspondantes grâce à des RECHERCHEV et des QUERY. un ptit bouton permet grâce a une macro de télécharger la facture toute propre en pdf.

Jusque la tout va bien et tout fonctionne.

Ce que je cherche à faire, c'est qu 'en entrant des numéros de factures en K10 (plage début) et K11 (plage fin), un script va me télécharger et me classer dans des dossiers google drive toutes les factures situées dans cette plages.

J'ai un script qui fonctionne assez bien, mon seul soucis c'est qu'a chaque fois il me met dans le pdf beaucoup plus que nécessaire...soit 95 pages...tout le fichier, alors que je veux uniquement la plage A1:J30 de l'onglet facturation...

Voici le script en question:

function téléchargerFacturesEnPDF() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = ss.getSheetByName("Facture Auto"); // le nom de l'onglet contenant la matrice de la factures

  var débutFacture = parseInt(feuille.getRange("K10").getValue()); //le numéro de la 1ere facture a imprimer et classer en pdf
  var finFacture = parseInt(feuille.getRange("K11").getValue()); //le numéro de la derniere facture a imprimer et classer en pdf

  for (var numéroFacture = débutFacture; numéroFacture <= finFacture; numéroFacture++) {
    feuille.getRange("G11").setValue(numéroFacture);  //le numéro de facture, quand on le modifie toutes les infos de facture changent.
    SpreadsheetApp.flush(); // Met à jour la cellule G11

    var dateFacture = feuille.getRange("G13").getValue();
    var jour = Utilities.formatDate(dateFacture, "GMT", "dd");
    var clientNom = feuille.getRange("B11").getValue();
    var moisAnnee = Utilities.formatDate(dateFacture, "GMT", "MMMM yyyy");

    // Remplacez les noms des mois en anglais par les noms des mois en français
    moisAnnee = moisAnnee.replace("January", "Janvier").replace("February", "Février").replace("March", "Mars").replace("April", "Avril").replace("May", "Mai").replace("June", "Juin").replace("July", "Juillet").replace("August", "Août").replace("September", "Septembre").replace("October", "Octobre").replace("November", "Novembre").replace("December", "Décembre");

    var dossierDriveParent = DriveApp.getFolderById("xxxxxxxxxxxxx"); // l'ID du dossier parent google drive

    // Copiez les valeurs de la plage A1:J30 dans une nouvelle plage sans formules
    var plageSansFormules = feuille.getRange("A1:J30").getValues();

    // Créez un nouveau tableur temporaire pour stocker les valeurs sans formules
    var nouveauTableur = SpreadsheetApp.create("TempSpreadsheet");
    var nouvelleFeuille = nouveauTableur.getSheets()[0];
    nouvelleFeuille.getRange(1, 1, 30, 10).setValues(plageSansFormules);

    // Exportez la feuille temporaire en PDF
    var pdfBlob = DriveApp.getFileById(nouveauTableur.getId()).getAs('application/pdf');
    var nomPDF = "FACTURE " + numéroFacture + " - " + jour + " " + moisAnnee + " - " + clientNom + ".pdf";
    dossierDriveParent.createFile(pdfBlob).setName(nomPDF);

    // Supprimez le tableur temporaire
    DriveApp.getFileById(nouveauTableur.getId()).setTrashed(true);
  }
}

A votre avis d’où vient ce soucis? je pensais que c'était a cause des formules, d'ou la copie de la plage temporairement, mais ça ne change rien...
Si vous avez une idée:)

Merci par avance pour votre aide!!

Je m'auto réponds, voici le code qui a résolu mon soucis:

fonction téléchargerFacturesEnPDF() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = ss.getSheetByName("Facture Auto");

  var débutFacture = parseInt(feuille.getRange("K10").getValue());
  var finFacture = parseInt(feuille.getRange("K11").getValue());

  for (var numéroFacture = débutFacture; numéroFacture <= finFacture; numéroFacture++) {
    feuille.getRange("G11").setValue(numéroFacture);
    SpreadsheetApp.flush();

    var dateFacture = feuille.getRange("G13").getValue();
    var jour = Utilities.formatDate(dateFacture, "GMT", "dd");
    var clientNom = feuille.getRange("B11").getValue();
    var moisAnnee = Utilities.formatDate(dateFacture, "GMT", "MMMM yyyy");
    moisAnnee = moisAnnee.replace("January", "Janvier").replace("February", "Février").replace("March", "Mars").replace("April", "Avril").replace("May", "Mai").replace("June", "Juin").replace("July", "Juillet").replace("August", "Août").replace("September", "Septembre").replace("October", "Octobre").replace("November", "Novembre").replace("December", "Décembre");

    var dossierDriveParent = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxx");
    var dossierMoisAnnee = getOrCreateFolder(dossierDriveParent, moisAnnee);

    const fr = 0, fc = 0, lc = 10, lr = 30;
    const pdfName = "FACTURE " + numéroFacture + " - " + jour + " " + moisAnnee + " - " + clientNom;

    const url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export" +
      "?format=pdf&" +
      "size=7&" +
      "fzr=true&" +
      "portrait=true&" +
      "fitw=true&" +
      "gridlines=false&" +
      "printtitle=false&" +
      "top_margin=1&" +
      "bottom_margin=0.25&" +
      "left_margin=0.4&" +
      "right_margin=0.4&" +
      "sheetnames=false&" +
      "pagenum=UNDEFINED&" +
      "attachment=true&" +
      "gid=" + feuille.getSheetId() + '&' +
      "r1=" + fr + "&c1=" + fc + "&r2=" + lr + "&c2=" + lc;

    const params = { method: "GET", headers: { "authorization": "Bearer " + ScriptApp.getOAuthToken() } };
    const blob = UrlFetchApp.fetch(url, params).getBlob().setName(pdfName + '.pdf');

    dossierMoisAnnee.createFile(blob);
  }
}

function getOrCreateFolder(parentFolder, folderName) {
  var folders = parentFolder.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    if (folder.getName() === folderName) {
      return folder;
    }
  }
  return parentFolder.createFolder(folderName);
}
Rechercher des sujets similaires à "soucis script google sheet pdf drive"