如何将文件夹中的所有 Google 文档转换为 PDF?
How to convert all Google Docs in a folder into PDFs?
我创建了一个简单的 Google Apps 脚本来将我的云端硬盘中一个文件夹中的所有 Google 文档转换为 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。
我创建了一个简单的 Google Apps 脚本来将我的云端硬盘中一个文件夹中的所有 Google 文档转换为 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。