创建的PDF不反映对原始文档所做的更改

时间:2016-12-01 04:55:19

标签: templates pdf google-apps-script google-docs

我有一个Google文档模板,该模板会自动复制到文件夹中,并使用来自电子表格单元格的值替换特定值。

该模板包含<<41>>等值,这些值曾用于“查找并替换”来自电子表格的值。

template table

查找和替换过程很好,文档的结果如下图所示

enter image description here

现在,我希望在更新后将此文档转换为PDF,因此我为转换创建了一个函数,并在所有代码执行后在底部调用它。

这是功能:

//convert to PDF
function convertPDF(FileID,newName) {
  Utilities.sleep(120000);
  docblob = DocumentApp.openById(FileID).getAs('application/pdf');
  /* Add the PDF extension */
  docblob.setName(newName + ".pdf");
  var file = DriveApp.createFile(docblob);
}

转换工作正常,但转换后的文档未更新。相反,它就像是在更改值之前从模板中新复制的那个。

如果您注意到,我在转换功能之前添加了一个“睡眠”计时器,以便延迟转换并给出保存更改的时间,我已经尝试了1分钟和2分钟的睡眠但是它仍然没有不行。

如何确保从更新的模板创建PDF?

3 个答案:

答案 0 :(得分:2)

我上面提供的函数运行正常,我们只需要在调用将doc转换为PDF的函数之前调用saveAndClose()方法强制脚本保存更改。

答案 1 :(得分:1)

我做了类似here的事情,您是否可以使用原始模板的文件ID,而不是使用convertPdf()中填充的副本?

答案 2 :(得分:0)

我一直在寻找针对同一问题的答案,但正在寻找Google表格。试一下saveAndClose(),但对Sheets无效。经过更多搜索后,发现类似问题的表格解决方案是:

SpreadsheetApp.flush() 

Here is the relevant Question/Answer.

希望这可以帮助某人更快地得到答案。