Script Création PDF
Bonjour,
je suis novice sur Sheet et je découvre le monde du script super intéressant.
Mais j'ai un petit soucis, j'ai crée une feuille avec un "bouton", lequel j'aimerai lui assigné un script qui permettrais de créer un PDF de la feuille et l'envoyer directement dans un dossier de mon google Drive.
actuellement j'ai trouver un script qui me permet de télécharger le fichier en pdf
function savePDFonComputer() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet()
const type = 'pdf'
const mimeTypes = { pdf: MimeType.PDF };
const name = sh.getName() + '.pdf'
const url = "je peux pas encore poster de lien xD" + ss.getId() + "/export?exportFormat=pdf&gid=" + sh.getSheetId() + "&access_token=" + ScriptApp.getOAuthToken();
const blob = UrlFetchApp.fetch(url).getBlob().setName(name);
const infoHtml = {
data: `data:${mimeTypes[type]};base64,` + Utilities.base64Encode(blob.getBytes()),
filename: `${name}`,
};
const html = HtmlService.createHtmlOutput(`<a href="${infoHtml.data}" download="${infoHtml.filename}">DOWNLOAD</a>`)
.setWidth(420).setHeight(100);
SpreadsheetApp.getUi().showModalDialog(html, "Télécharger le fichier")
}Mais j'aimerai, ne pas le télécharger et que le fichier s'envois directement dans un dossier que j'aurai créer dans mon drive.
Pouvez-vous m'éclairer ?
D'avance merci et bonne et heureuse année :-)
Bonjour,
Tu peux ajouter ceci à ton script :
var file = DriveApp.createFile(pdf);
var folder = DriveApp.getFolderById("1YUqQBsyHR7g9-dTs1JRnfxg706htP"); /* 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 : 0AGuVhN09TUk9PVA */
file.moveTo(folder)Bonjour, merci pour votre réponse,
du coups j'ai ajouter cela mais cela ne change rien :s
Il faut pas juste ajouter mais l'adapter à votre script actuel
Essayez ceci :
function savePDFonComputer() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const type = 'pdf';
const mimeTypes = { pdf: MimeType.PDF };
const name = sh.getName() + '.pdf';
const url = "je peux pas encore poster de lien xD" + ss.getId() + "/export?exportFormat=pdf&gid=" + sh.getSheetId();
var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' + token }, muteHttpExceptions: true });
var pdf = docurl.getAs('application/pdf').setName(name); // Correction ici
var file = DriveApp.createFile(pdf);
var folder = DriveApp.getFolderById("1YUqQBsyHR7g9-dTs1JRnfxg73JL06htP");
file.moveTo(folder);
}Oh parfait sa fonctionne,
je comprends pas bien la différence de la balise (const) et (var) mais je vais me renseigner ;-)
Si j'ai bien lu, google utilise un mode de language propre a lui mais aves-vous un site pour pouvoir apprendre sur ce type de language ?
Merci mille fois à toi.
Question: peux ton obliger le PDF à se mettre en mode paysage ?
et exiger que le fichier prennent le nom par rapport a une cellule précise ?
const = constante
var = variable
les données contenues sont appelées différemment, une constante ne peut pas être modifié, à contrario d'une variable.
Pour apprendre, directement ici :
https://www.sheets-pratique.com/fr/apps-script/introduction
Pour le nom du fichier, j'ai adapté le script (j'ai mis A1,il faut modifier) + ai ajouté le paramétrage en paysage
function savePDFonComputer() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const type = 'pdf';
const mimeTypes = { pdf: MimeType.PDF };
const name = sh.getRange('A1').getValue();
const url = "je peux pas encore poster de lien xD" + ss.getId() + "/export?exportFormat=pdf"+"&size=A4&portrait=true"+"&gid=" + sh.getSheetId();
var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' + token }, muteHttpExceptions: true });
var pdf = docurl.getAs('application/pdf').setName(name); // Correction ici
var file = DriveApp.createFile(pdf);
var folder = DriveApp.getFolderById("1YUqQBsyHR7g9-dTs1JRnfxg73JL06htP");
file.moveTo(folder);
}Sa marche nickel
Merci beaucoup pour ton aider, je viens de lire les 3 première page en réunion
donc si je veux réutiliser le script pour un autre document c'est possible ? juste en crée une copie et modifier légèrement le script.
Bonne fin de journée à toi
donc si je veux réutiliser le script pour un autre document c'est possible ? juste en crée une copie et modifier légèrement le script.
Tout a fait, j'ai personnellement une base de script prédéfini que j'utilise régulièrement.
Le tout est de construire un script simple à lire, avec peu d'éléments à modifier, ensuite ça s'adapte facilement.
Pour reprendre en exemple le script final, les seules variables sont :
l'url de la feuille
le nom du fichier PDF
le dossier du drive