2015-02-04 3 views
5

Я пытался конвертировать файл Документов Google в файл PDF без необходимости использовать параметр загрузки. Ниже приведен сценарий, который я использовал в Редакторе скриптов, но он не работает. Я думаю, что ошибка после утверждения IF.Конвертировать документ Google в PDF с помощью Google Script Editior

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.'); 
    } 
} 

ответ

4

Не удается, так как папка не определена. Если вы замените его на 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

Благодарю Вас за ответ и объяснить свою ошибку. Другой вопрос: можно ли сохранить сохраненный файл в той же папке, что и файл, который вы конвертируете? –

2

Чтобы сохранить 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); 
} 
Смежные вопросы