Google apps script 谷歌应用程序脚本创建谷歌文档,然后将blob保存为PDF,即使在saveAndClose()之后也无法工作
我想复制一个谷歌文档(它是一个模板),将其保存为新文件名,向文档中添加文本,向文档中添加图像,然后制作文档的pdf副本 我可以得到文件复制,添加文本,添加图像,这一切都很好。然后我添加了转换为blob的行来创建pdf,但是pdf现在只是添加文本和图像之前的模板。然后我保存并关闭,然后重新打开文档,然后转换成blob pdf,但在这种情况下,文档的文本和图像是空白的,pdf是空白的。在创建pdf之前,我尝试了多次保存、关闭和重新打开。我不知道为什么它不能正常工作Google apps script 谷歌应用程序脚本创建谷歌文档,然后将blob保存为PDF,即使在saveAndClose()之后也无法工作,google-apps-script,google-docs,Google Apps Script,Google Docs,我想复制一个谷歌文档(它是一个模板),将其保存为新文件名,向文档中添加文本,向文档中添加图像,然后制作文档的pdf副本 我可以得到文件复制,添加文本,添加图像,这一切都很好。然后我添加了转换为blob的行来创建pdf,但是pdf现在只是添加文本和图像之前的模板。然后我保存并关闭,然后重新打开文档,然后转换成blob pdf,但在这种情况下,文档的文本和图像是空白的,pdf是空白的。在创建pdf之前,我尝试了多次保存、关闭和重新打开。我不知道为什么它不能正常工作 // Create templ
// Create template copy:
const folder = DriveApp.getFolderById(destinationFolderID); // Get folder with specified destinationFolderID
const copiedTemplateDoc = DriveApp.getFileById(templateGoogleDocumentID).makeCopy("file name xyz", folder); // Copy template to destination folder
const docId = copiedTemplateDoc.getId();
var doc = DocumentApp.openById(docId);
const header = doc.getHeader();
const body = doc.getBody();
// Insert photo
if(imageURL) {
const imageBlob = UrlFetchApp.fetch(imageURL).getBlob();
const totalElements = doc.getNumChildren();
const el=[]
for(var j = 0; j < totalElements; ++j) {
const element = doc.getChild(j);
const type = element.getType();
if (type =='PARAGRAPH'){
el[j]=element.getText()
if(el[j]=='{Photo}'){
element.removeFromParent();
const styles = {};
styles[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
doc.insertImage(j, imageBlob).setHeight('144').getParent().setAttributes(styles);
}
}
}
}
doc.saveAndClose() // the doc must be saved and closed before it can be converted to a pdf
DocumentApp.openById(docId);
const testPDF = DriveApp.createFile(doc.getBlob()).moveTo(folder); // Export a PDF copy of the Lead Sheet doc to the SREC drive folder
//创建模板副本:
const folder=DriveApp.getFolderById(destinationFolderID);//获取具有指定destinationFolderID的文件夹
const copiedTemplateDoc=DriveApp.getFileById(templateGoogleDocumentID).makeCopy(“文件名xyz”,文件夹);//将模板复制到目标文件夹
const docId=copiedTemplateDoc.getId();
var doc=DocumentApp.openById(docId);
const header=doc.getHeader();
const body=doc.getBody();
//插入照片
if(imageURL){
const imageBlob=UrlFetchApp.fetch(imageURL.getBlob();
const totalElements=doc.getNumChildren();
常数el=[]
对于(var j=0;j
使用这个:然后使用这个blob:相信我,我已经搜索了一个多小时的解决方案。我做过getBlob(),也尝试过getAs('application/pdf'),但两者都不起作用——即使使用不同的组合和排列来保存和重新打开文件也不确定是否相关,但您对打开的文档不做任何操作。您应该将其重新分配给一个变量:ChangeDocumentApp.openById(docId)代码>至doc=DocumentApp.openById(docId)代码>