我正在尝试转换我的Google云端硬盘上的现有.DOCX文件。 它一直工作,直到应该创建新的(PDF)文件,然后我收到此错误消息: “从application / vnd.openxmlformats-officedocument.wordprocessingml.document转换为application / pdf失败”。
相关的DOCX文件不应该被破坏,因为它可以由Google文档打开并从那里手动转换为PDF。
我已启用Drive API(在云端硬盘和API控制台中)
其他人看到过这个问题了?
代码:
function convertPDF(fileid) {
var docId = fileid;
var f=DriveApp.getFileById(docId);
var n=f.getName();
var docFolder = f.getParents().next().getId();
var docblob = f.getAs('application/pdf');
n=n.replace(".docx",".pdf");
docblob.setName(n);
var bn=docblob.getName();
var t=docblob.getContentType();
Logger.log(bn+"-->"+t); // <-- works
var file = DriveApp.createFile(docblob); // <<- error msg here
var fileId = file.getId();
moveFileId(fileId, docFolder);
return (fileId);
}
答案 0 :(得分:1)
在Google上,无法将其从docx
直接转换为pdf
。但是,在将docx
转换为Google文档后,它可以转换为pdf
。要将docx
转换为Google文档,您可以使用高级Google服务来使用Drive API。为此,请按以下步骤启用高级Google服务的Drive API。
高级Google服务的详细信息为here。
我认为在API控制台上启用Drive API已经完成,因为您已经在脚本上使用了DriveApp
。当脚本中使用DriveApp
时,Google会自动在API控制台上启用Drive API。
使用Drive API修改后的脚本如下所示。
function convertPDF(docx_id) {
var docx = DriveApp.getFileById(docx_id);
var docFolder = docx.getParents().next().getId();
var n = docx.getName();
var res = Drive.Files.insert({ // Here, Drive API of Advanced Google services is used.
"mimeType": "application/vnd.google-apps.document",
"title": n
}, docx.getBlob());
var f = DriveApp.getFileById(res.id).getBlob();
var docblob = f.getAs('application/pdf');
n=n.replace(".docx",".pdf");
docblob.setName(n);
var bn=docblob.getName();
var t=docblob.getContentType();
Logger.log(bn+"-->"+t);
var file = DriveApp.createFile(docblob);
var fileId = file.getId();
Logger.log(fileId)
moveFileId(fileId, docFolder);
return (fileId);
}
我不知道moveFileId()
。因此,如果此行发生错误,请检查该功能。
在这种情况下,Google文档会创建为转换为PDF的临时文件。文件名与docx文件相同。因此,如果您不需要,请将其删除。