我一直在尝试将Google文档文件转换为PDF文件,而无需使用下载选项。下面是我在脚本编辑器中使用的脚本,但它似乎不起作用。我认为错误发生在IF声明之后。
function convertPDF() {
doc = DocumentApp.getActiveDocument();
docblob = DocumentApp.getActiveDocument().getAs('application/pdf');
var result = DocumentApp.getUi().alert(
'Save As PDF?',
'Save current document (Name:'+doc.getName()+') as PDF',
DocumentApp.getUi().ButtonSet.YES_NO);
if (result == DocumentApp.getUi().Button.YES) {
docblob.setName(doc.getName())
folder.createFile(docblob);
DocumentApp.getUi().alert('Your PDF has been converted to a PDF file.');
} else {
DocumentApp.getUi().alert('Request has been cancelled.');
}
}
答案 0 :(得分:7)
失败,因为未定义文件夹。如果将其替换为DriveApp,则将在根文件夹中创建PDF,您的功能将起作用。您还可以在消息框中显示完整的URL。
function convertPDF() {
doc = DocumentApp.getActiveDocument();
var ui = DocumentApp.getUi();
var result = ui.alert(
'Save As PDF?',
'Save current document (Name:'+doc.getName()+'.pdf) as PDF',
ui.ButtonSet.YES_NO);
if (result == ui.Button.YES) {
docblob = DocumentApp.getActiveDocument().getAs('application/pdf');
/* Add the PDF extension */
docblob.setName(doc.getName() + ".pdf");
var file = DriveApp.createFile(docblob);
ui.alert('Your PDF file is available at ' + file.getUrl());
} else {
ui.alert('Request has been cancelled.');
}
}
答案 1 :(得分:4)
将PDF保存在原始目录中:
function convertPDF() {
doc = DocumentApp.getActiveDocument();
// ADDED
var docId = doc.getId();
var docFolder = DriveApp.getFileById(docId).getParents().next().getId();
// ADDED
var ui = DocumentApp.getUi();
var result = ui.alert(
'Save As PDF?',
'Save current document (Name:'+doc.getName()+'.pdf) as PDF',
ui.ButtonSet.YES_NO);
if (result == ui.Button.YES) {
docblob = DocumentApp.getActiveDocument().getAs('application/pdf');
/* Add the PDF extension */
docblob.setName(doc.getName() + ".pdf");
var file = DriveApp.createFile(docblob);
// ADDED
var fileId = file.getId();
moveFileId(fileId, docFolder);
// ADDED
ui.alert('Your PDF file is available at ' + file.getUrl());
} else {
ui.alert('Request has been cancelled.');
}
}
并添加此通用功能
function moveFileId(fileId, toFolderId) {
var file = DriveApp.getFileById(fileId);
var source_folder = DriveApp.getFileById(fileId).getParents().next();
var folder = DriveApp.getFolderById(toFolderId)
folder.addFile(file);
source_folder.removeFile(file);
}