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 !