[General Questions and Answers] MaximusNimbusMeridius:
Hello,

I'm developping my own Data Base on google Sheet, and I would like to generate automatically PDF for my invoices, quickly and for free.

[Code at the end]

The .gs script function finish good, but the pdf generated can't be open normally after generation, when I click on the pdf to open, I obtain it :

Download link generated automatically : https:// drive.google.com/file/d/1ahWPYlssZORkkE09wHIW8zoyp7uWlJiA/view?usp=sharing

I'm forced to connect on my google account VIA the document ( never saw that before), in order to see the content. I feel like it's only when I connect with the mail adress which worked for the creation, that he opens et download correctly (if i download it with another account, i'm only redirected to the Sheet).

If anyone has ideas in order to help me...

Thanks for your time.

Max

Code :

```

fonction onOpen() {

const ui = SpreadsheetApp.getUi();

ui.createMenu("GED").addItem("Enregistrer le PDF ↓ ","savePDF").addToUi();

}

fonction savePDF()

{

// SÉLECTIONNEUR LA FEUILLE A SAUVEGARDE

const ss = SpreadsheetApp.getActiveSpreadsheet();

feuille const = ss.getActiveSheet();

//URL de SS ?

const ssUrl = ss.getUrl();

const sheetId=sheet.getSheetId();

const url = ssUrl.replace(/\/edit.*$/,'')

+ '/export?exportformat=pdf&format=pdf'

+ '&taille=LETTRE'

+ '&portrait=vrai'

+ '&fitw=true'

+ ' &top_margin=0.50'

+ '&bottom_margin=0.50'

+ '&marge_gauche=0.50'

+ '&

+ '&pagenum=false'

+ '&gridlines=false'

+ '&fzr=FAUX'

+ '&gid='+sheetId;

// CREER LE PDF A PARTIR DE L'URL

// var jeton = ScriptApp.getOAuthToken();

const docurl = UrlFetchApp.fetch(url);

const pdf = docurl.getAs('application/pdf');

fichier const = DriveApp.createFile(pdf);

// RÉCOLTER LES INFORMATIONS DANS LA FEUILLE POUR COMPOSER LE NOM DU DOCUMENT

const docId = feuille.getRange('B2').getValue();

const clientName = sheet.getRange('C3').getValue();

const docDate = feuille.getRange('D2').getValue();

//mise en forme de la date : mois-annee

const docDateMMYY = docDate.getMonth()+"-"+docDate. getFullYear();

// Concaténons le tout

const docName = docId+"_DEVIS_10Zaine_"+clientName+"_"+docDateMMYY ;

// RENOMMER ET COPIER LE PDF DANS LE BON DOSSIER

/*

ATTENTION IL FAUT ADAPTATEUR LE CODE AVEC L'ID DU DOSSIER DE DESTINATION

https://drive.google.com/open?id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

*/

dossier const = DriveApp.getFolderById ("1OnsayBs90_G1NmBVbQALYNK_SmpWLWPF");

const finalFile = file.makeCopy(docName,folder);

//SUPPRIMER LE PDF ORIGINAL

file.setTrashed(true);

//RÉCUPÉRER LE LIEN

const docUrl = fichier_final.getUrl();

//ajouter l'urL dans la GED.

const sheetGed = ss.getSheetByName('GED');

sheetGed.appendRow([new Date(),docId,docUrl,docName]);

// envoyer le document au client

const clientEmail = sheet.getRange('C7').getValue();

const message = "Bonjour"+"<p>Veuillez trouver ci-joint le devis "+docName+"</p>"+"<a href='"+docUrl+"'>Cliquez ici pour ouvrir le devis.</a >" ;

MailApp.sendEmail({to:clientEmail , subject: "Votre devis "+docName, htmlBody:message}) ;

// ANNONCER LA RÉUSSITE DE CRÉATION DU DOCUMENT

const ui = SpreadsheetApp.getUi();

ui.alert('Bien joué\n\nLe devis '+ docId +' a bien été créé\nIl porte le nom : '+docName+'\n\nLe lien a été ajouté dans la GED.');

openWindow(docUrl);

}

// Ouvrir le document dans une nouvelle fenêtre :

let htmlContent = 'Le document a été créé. <a href="'+url+'" target="_blank">Cliquez ici pour l\'ouvrir</a>'+

'<script>const thisWindowOpen = window.open("'+url+'" , "_blank" , "redimensionnable,barres de défilement,état"); </script>';

const html = HtmlService.createHtmlOutput(htmlContent)

.setHauteur(100)

.setWidth(500);

const ui = SpreadsheetApp.getUi();

ui.showModalDialog(html, "Ouverture en cours.");

}```