已生成PDF,但单元格为空 [英] PDF generated but the cells are empty

查看:95
本文介绍了已生成PDF,但单元格为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

GAS生成通过电子邮件发送的pdf,但是单元格为空.

The GAS generate a pdf that is sent by email, the cells are empty though.

单元格包含公式.

我不知道在哪里看或要修改什么.

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;
}

我希望报告显示单元格中包含的信息. 下面是两个屏幕截图: 电子表格视图 PDF文档结果

I expect the report shows the information contained in the cells. Below tow screenshots: The spereadsheet view The PDF document result

推荐答案

尝试一下:

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); 
}

这篇关于已生成PDF,但单元格为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆