我创建了一个简单的谷歌应用程序脚本,将硬盘中文件夹中的所有谷歌文档转换为PDF,并将其保存到同一文件夹中,这很有效:
function convertDocsToPDF() {
var folderId = "asdf";
var folder = DriveApp.getFolderById("folderId");
var invoices = folder.getFiles();
while (invoices.hasNext()) {
var invoice = invoices.next();
var id = invoice.getId();
var file = DriveApp.getFileById(id);
var PDFblob = file.getAs(MimeType.PDF);
var PDF = DriveApp.createFile(PDFblob);
PDF.moveTo(file.getParents().next());
}
}
我写这篇文章是为了测试转换,但希望将其集成到一个更长的脚本中。较长的脚本通过将##TextToReplace##
样式的字段替换为我从电子表格中提取的数据,从模板中创建发票。
当我尝试集成convertDocsToPDF()
功能时,PDF看起来都像模板,而不是发票。当我在脚本完成后查看发票文档时,它看起来是正确的,所有字段都替换为正确的数据,但PDF看起来只是模板的副本。
在我的脚本编辑发票和将发票保存在驱动器中之间是否存在延迟,以便PDF转换在替换文本之前看到发票?
将编辑推送到服务器需要时间
这个延迟可能很小,但脚本会更快。
你可以尝试的事情:
- 按照@Aaron Dunigan AtLee的建议使用
Document.saveAndClose()
- 在脚本的战略位置使用
Utilities.sleep()
- 先循环生成发票,然后转换为pdf