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 pas une super idée, je lirai cela plus tard mille merci à toi en tous cas.

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

Rechercher des sujets similaires à "script creation pdf"