我有一个Google文档模板,该模板会自动复制到文件夹中,并使用来自电子表格单元格的值替换特定值。
该模板包含<<41>>
等值,这些值曾用于“查找并替换”来自电子表格的值。
查找和替换过程很好,文档的结果如下图所示
现在,我希望在更新后将此文档转换为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?
答案 0 :(得分:2)
我上面提供的函数运行正常,我们只需要在调用将doc转换为PDF的函数之前调用saveAndClose()方法强制脚本保存更改。
答案 1 :(得分:1)
我做了类似here的事情,您是否可以使用原始模板的文件ID,而不是使用convertPdf()中填充的副本?
答案 2 :(得分:0)
我一直在寻找针对同一问题的答案,但正在寻找Google表格。试一下saveAndClose(),但对Sheets无效。经过更多搜索后,发现类似问题的表格解决方案是:
SpreadsheetApp.flush()
Here is the relevant Question/Answer.
希望这可以帮助某人更快地得到答案。