使用Google Apps脚本,如何确保将我的Google文档导出到PDF之前已更新?

时间:2018-12-29 15:36:47

标签: javascript google-apps-script google-docs export-to-pdf

我创建了以下文本以采用Google Doc模板,然后替换我的“已标记”变量(标记为“ ## variable_name ##”)。替换完这些变量后,然后将Google文档导出为PDF。

问题是,即使我在导出到PDF之前执行了Google Doc的更新,但PDF导出却从不反映这些更新,而是仍然显示我的所有变量。有什么方法可以延迟导出或确保在导出之前更新Google文档?

我尝试了一个if语句来检查“标记的”变量,如果它返回空值,那么我将执行PDF ---但它仍会随变量一起导出。

代码摘录:

//Define inputs for this sample code
  var long_address = '123 Sample St, Chicago, IL 60621'
  var scope = 'candy and toys'
  var term = '4'
  var term_fee = '200'

//Identify the Google Doc template
  var templateID = '1yo_D3A8dvTmkz1ZpvZmSDowON0dqL8Mg-lP9vkle9R4';

//Copy the Google Doc template so we don't update the template
  var documentID = DriveApp.getFileById(templateID).makeCopy().getId();

//Get the copy document body as a variable
  var body = DocumentApp.openById(documentID).getBody();

//Replace Text
  body.replaceText('##Full_Address##', long_address)
  body.replaceText('##Scope##', scope)   
  body.replaceText('##Term##', term)
  body.replaceText('##Full_Rate##', term_fee)

//Convert Google Doc to PDF
  docblob = DriveApp.getFileById(documentID).getAs('application/pdf');
  docblob.setName(DriveApp.getFileById(documentID).getName() + ".pdf");
  var PDFfile = DriveApp.createFile(docblob);
  var PDFfileID = PDFfile.getId();

//Move the PDF to a destination folder and remove from current folder
  var toFolderID = '1nLA33aXt4RcVZA1aZz3-QWV7fOkrBp96';
  var fromFolder = DriveApp.getFileById(PDFfileID).getParents().next();
  var toFolder = DriveApp.getFolderById(toFolderID);
  toFolder.addFile(PDFfile);
  fromFolder.removeFile(PDFfile);

我还尝试了类似的技术将Google Doc的正文作为HTML放入电子邮件中,但是存在相同的问题,即变量没有被更新-任何帮助将不胜感激!

0 个答案:

没有答案