Reputation: 159
The GAS generate a pdf that is sent by email, the cells are empty though.
The cells contain formulas.
I have no idea where to look or what to modify.
function emailAsPDF() {
var emailAddress=Session.getActiveUser().getEmail();
var mess="Voulez-vous envoyer votre rapport à l'adresse : " + emailAddress;
var ans= Browser.msgBox("Courriel", mess, Browser.Buttons.YES_NO);
if (ans===Browser.Buttons.NO){return;}
var mess="Votre rapport a été envoyé à l'adresse : " + emailAddress;
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName("Recherche");
//var range = sheet.getActiveCell();
var CandidateName=ss.getRangeByName("Nom.Candidat").getValue();
var emailSubject="Vérifications pré-emploi complétées" +" - "+ CandidateName;
var emailMessage="Bonjour," + "\n\n" + "J’ai le plaisir de vous informer que les vérifications sont complétées pour le candidat indiqué au tableau de résultats pré-emploi suivant:" + "\n\n" + "Bonne journée !";
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();//.getSheetByName("Formation");
var sheet=spreadsheet.getSheetByName("Recherche");
var newSpreadsheet = SpreadsheetApp.create("Spreadsheet to export");
sheet.copyTo(newSpreadsheet);
var sheetNames=newSpreadsheet.getSheets();
newSpreadsheet.deleteActiveSheet();
var blob = newSpreadsheet.getAs('application/pdf');
var folderID = parentFolder(); // Folder id to save the PDF
Logger.log(folderID);
var folder = DriveApp.getFolderById(folderID);
var pdfName = spreadsheet.getName() + " - " + CandidateName + '.pdf';
var pdfFile = folder.createFile(blob).setName(pdfName);
MailApp.sendEmail(emailAddress, emailSubject, emailMessage,{attachments:[pdfFile]});
//DriveApp.getFileById(pdfFile.getId()).setTrashed(true);
DriveApp.getFileById(newSpreadsheet.getId()).setTrashed(true);
DriveApp.getFileById(pdfFile.getId()).setTrashed(true);
Browser.msgBox("Courriel", mess, Browser.Buttons.OK);
}
function parentFolder() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var file = DriveApp.getFileById(ss.getId());
var ParentFolder= file.getParents();
while ( ParentFolder.hasNext() ) {
var folder = ParentFolder.next();
folderID=folder.getId();
Logger.log(folderID);
}
return folderID;
}
function test() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var file = DriveApp.getFileById(ss.getId());
var ParentFolder= file.getParents();
var folder = ParentFolder.next();
Logger.log(folder);
// while ( ParentFolder.hasNext() ) {
// var folder = ParentFolder.next();
// folderID=folder.getId();
// Logger.log(folderID);
// }
// return folderID;
}
I expect the report shows the information contained in the cells. Below tow screenshots: The spereadsheet view The PDF document result
Upvotes: 0
Views: 69
Reputation: 64032
Try this:
function emailAsPDF() {
var emailAddress=Session.getActiveUser().getEmail();
var mess="Voulez-vous envoyer votre rapport à l'adresse : " + emailAddress;
var ans= Browser.msgBox("Courriel", mess, Browser.Buttons.YES_NO);
if (ans===Browser.Buttons.NO){return;}
var mess="Votre rapport a été envoyé à l'adresse : " + emailAddress;
var ss=SpreadsheetApp.getActive();
var sheet=ss.getSheetByName("Recherche");
var CandidateName=ss.getRangeByName("Nom.Candidat").getValue();
var emailSubject="Vérifications pré-emploi complétées" +" - "+ CandidateName;
var emailMessage="Bonjour," + "\n\n" + "J’ai le plaisir de vous informer que les vérifications sont complétées pour le candidat indiqué au tableau de résultats pré-emploi suivant:" + "\n\n" + "Bonne journée !";
var shts=ss.getSheets();
var hdnA=[];
shts.forEach(function(sht){if(sht.getName()!="Recherche") {sht.hideSheet();hdnA.push(sht.getName());}})
var blob = ss.getAs('application/pdf');
var file=DriveApp.getFileById(ss.getId());
var folder=file.getParents().next();
var pdfName = ss.getName() + " - " + CandidateName + '.pdf';
var pdfFile = folder.createFile(blob).setName(pdfName);
MailApp.sendEmail(emailAddress, emailSubject, emailMessage,{attachments:[pdfFile]});
DriveApp.getFileById(pdfFile.getId()).setTrashed(true);
hdnA.forEach(function(name){ss.getSheetByName(name).showSheet();})
Browser.msgBox("Courriel", mess, Browser.Buttons.OK);
}
Upvotes: 1