Prob script Sheet enregistrement en pdf
Bonjour,
Malgré la lecture de plusieurs sujets sur le forum, je n'arrive pas à régler mon problème.
Je souhaiterais pouvoir générer un pdf du fichier ci-joint : https://docs.google.com/spreadsheets/d/1cWH_m3Yz0EYIVYbnVAL5q8jYAsSLM7UhgqavgtsniNM/edit?usp=sharing
L'objectif est d'enregistrer le fichier en pdf sur mon drive avec le nom suivant : Baro_"C3"_"B5" (exemple : Baro_TOUL_sept.23)
Voici mon script :
function envoiCopieFeuillePDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = '1cWH_m3Yz0EYIVYbnVAL5q8jYAsSLM7UhgqavgtsniNM';
const feuilleID = '801069667';
const dossier = DriveApp.getFolderById('1-qf-yUur6dCTzdcRAet_l4cgO7qqqH27');
const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
const f = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DEVIS')
const fichier = f.getRange('C3').getValue()+' '+f.getRange('B5').getValue()+' '+ d + ".pdf"
// Création du fichier pdf
const url = 'https://docs.google.com/spreadsheets/d/801069667/export?';
const exportOptions =
'exportFormat=pdf&format=pdf' +
'&size=A4' +
'&portrait=true' + // orientation portrait, false pour paysage
'&fitw=false' + // pas d'ajustement en largeur
'&sheetnames=false&printtitle=false' + // pas de nom ni de titre à l'impression
'&pagenumbers=false&gridlines=false' + // pas de numérotation, pas de grille
'&fzr=false' + // frozen rows = pas de répétition de l'en-tête
'&gid=' + feuilleID;
var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var reponse = UrlFetchApp.fetch(url + exportOptions, params).getBlob();
// Sauvegarde du fichier.
dossier.createFile(reponse.setName(fichier));
}
Lors de l'exécution, le message suivant s'affiche :
Merci par avance pour votre aide.
Bonjour,
Ta ligne 11 :
const f = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DEVIS')Essaye de stocker la feuille sheet du classeur ouvert ayant pour nom "DEVIS" dans une constante.
Si tu n'as pas de feuille avec le nom "DEVIS" cette ligne reviendra en erreur.
Voici un script pré-fabriqué, il y a juste 2-3 infos à modifier, il faut lire les commentaires :
function savePDF()
{
// Selection de la feuille à PDFiser
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//générer URL de la feuille
var ssUrl = ss.getUrl();
var sheetId= sheet.getSheetId();
var url = ssUrl.replace(/\/edit.*$/,'') // ici sont indiquées les caractéristiques de l'impression PDF, il necessite d'adapter les marges, orientation en fonction de vos données.
+ '/export?exportformat=pdf&format=pdf'
+ '&size=A4'
+ '&portrait=true'
+ '&fitw=true'
+ '&top_margin=-0.95'
+ '&bottom_margin=0.50'
+ '&left_margin=0.50'
+ '&right_margin=0.50'
+ '&sheetnames=false'
+ '&printtitle=false'
+ '&pagenum=false'
+ '&gridlines=false'
+ '&fzr=FALSE'
+ '&gid='+sheetId;
// Création du nom du PDF, dans mon cas une cellule située en A6, vous pouvez y mettre un nom directement, ou bien un autre celulle.
var docName = sheet.getRange('A6').getValue();
// 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);
// enregistrement du PDF dans le Drive
var folder = DriveApp.getFolderById(""17LmzDRdzPpH3zt_4rufGLnGXbBWbQNo5"");/* Important ! > Ici on doit mettre l'adresse du dossier drive où on veut sauvegarder le PDF, allez dans votre dossier et dans la barre d'URL en haut copier le code qui ressemble à ça : 0AGuVhN09TP00Uk9PVA */
var finalFile = file.moveTo(folder);
var docUrl = finalFile.getUrl();
}Bonjour,
J'ai modifié "DEVIS" par le nom de mon fichier.
Malheureusement, cela ne change rien.
Je suis totalement novice dans la rédaction des scripts.
Etes-vous en mesure de modifier mon script pour le rendre opérationnel ?
Merci de votre aide.
Essayez avec le script que j'ai proposé, il n'y a que quelques éléments à modifier et il fonctionne.