首页 > 解决方案 > 使用 GAS 将 google doc 转换为 pdf 忽略文本编辑

问题描述

我正在创建一个 google app 脚本,它根据电子表格中的数据生成发票。对于每张发票,脚本应复制模板文档文件,添加相关数据并输出 pdf。

当我尝试将修改后的 doc 文件导出为 pdf 时,它会根据原始模板文件创建一个 pdf。没有考虑任何编辑。

然而,在我的convertToPDF函数中,文件 ID 是正确的,并且它指向的文档已被正确修改。我试图convertToPDF从外面打电话,GenInvoice但收效甚微。

我对 GAS 的理解是有限的,我只是通过反复试验来修补我的前进道路。在这里,我一无所知。

这是一个重现我的问题的最小示例:

function GenInvoice(folder, month, restaurant, adresse, forfait, invoiceNr){

  // copy template
  var templateid = "1kDDBHiwUikKHRtywJ_Tfig4Nf_wNbdy814_5SvLerkw" 
  var template = DriveApp.getFileById(templateid);
  var newfile  = template.makeCopy(template.getName() + "_edited" );

  // Open invoice in docs
  var docId  = newfile.getId()
  var doc = DocumentApp.openById(docId);
  var body = doc.getBody();

  // Remplacing place-holders
  body.replaceText("%TemplateText%", "%ModifiedText%");

  // Final print
  body.appendParagraph('Great work! Keep your flow!');

  // convert to PDF
  convertToPDF(docId)
}

function convertToPDF(theId){
  console.log(theId)
  var doc = DriveApp.getFileById(theId);

  /* Add the PDF extension */
  docblob = doc.getAs('application/pdf');
  docblob.setName("Modified_template.pdf"); // doc.getName() + ".pdf")

  var file = DriveApp.createFile(docblob);
}

标签: javascriptpdfgoogle-apps-scriptgoogle-sheetsgoogle-docs

解决方案


尝试添加“doc.saveAndClose();” 在转换之前。

像那样:

// Final print
body.appendParagraph('Great work! Keep your flow!');

//Save and close doc
doc.saveAndClose();

// convert to PDF
convertToPDF(docId)

推荐阅读