Script pour export PDF, j'y suis presque

Bonjour à tous

Je cherche à exporter en PDF automatiquement une série d'onglets (définis en colonne B de mon onglet "To print")

Je suis parti sur ce code mais j'ai une erreur que je n'arrive pas à résoudre...

Le code :

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu("GED");
  menu.addItem("Enregistrer le PDF ↓ ","savePDF");
  menu.addToUi();
}

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();
// Créer l'URL du document
    var url = ssUrl.replace(/\/edit.*$/,'')
      + '/export?exportformat=pdf&format=pdf'
      + '&size=LETTER'
      + '&portrait=true'
      + '&fitw=true'
      + '&top_margin=0.50'
      + '&bottom_margin=0.50'
      + '&left_margin=0.50'
      + '&right_margin=0.50'
      + '&sheetnames=false'
      + '&printtitle="TEST"'
      + '&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('B2').getValue();
  var clientName =  sheet.getRange('B2').getValue();
  var docDate = sheet.getRange('A7').getValue();
  //mise en forme de la date : mois-annee
  var docDateMMYY = (docDate.getMonth()+1)+"-"+docDate.getFullYear();
  // Concaténons le tout
  var docName = docId+"_DEVIS_10Zaine_"+clientName+"_"+docDateMMYY ;

  // 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);

 //COPIER LE PDF DANS LE DOSSIER
 /*
   ATTENTION IL FAUT ADAPTER LE CODE AVEC L'ID DU FOLDER DE DESTINATION
  */
  var folder = DriveApp.getFolderById('1_ngDfUG2KHeI-97MD9qoZpXcNsXQrj5o');
  var finalfile = file.moveTo(folder);

J'ai cette erreur sur la première fonction:

Exception: Cannot call SpreadsheetApp.getUi() from this context.

onOpen @ onOpen.gs:2

Et sur la seconde j'ai cette erreur :

TypeError: docDate.getMonth is not a function

savePDF @ onOpen.gs:39

Je n'arrive vraiment pas à la résoudre, j'ai regardé sur plein de forum et je ne trouve rien...

Autre question qui me surprend, ce code est censé ajouter un bouton dans la barre de menu de google sheet mais je n'ai rien, pour lancer le code, je passe par l'éditeur de script...

En espérant que quelqu'un puisse m'aider...

Mille merci

Bonjour,

Concernant ta seconde erreur, que contient retour ta cellule A7 ?

Bonjour

Merci pour ta réponse

une date sous ce format : 01/08/2022

J'ai fait le test de mon coté, si en A7 la cellule est bien en format date ça fonctionne.

Si toutefois elle est en format texte j'ai ton message d'erreur : "TypeError: docDate.getMonth is not a function"

Il faut donc s'assurer qu'en A7 c'est bien format date (pour vérifier rapidement tu peux faire =TYPE(A7) si le résultat est 2 c'est du texte, si c'est 1 c'est numérique, donc OK.

PS : ton souci avec onOpen, tu as un fichier sheet d'ouvert ou tu es directement sur App Script ? Si tu es directement sur App Script sans passer par Sheet ça doit générer ce bug, car onOpen ouvre un menu sur l'app Sheet.

merci Pierre pour ta réponse

je vais checker les histoires de date déjà

merci !

Rechercher des sujets similaires à "script export pdf suis presque"