2015-02-04 44 views
5

Próbowałem przekonwertować plik Dokumentów Google na plik PDF bez konieczności korzystania z opcji pobierania. Poniżej znajduje się skrypt, którego użyłem w edytorze skryptów, ale wygląda na to, że nie działa. Myślę, że błąd jest po instrukcji IF.Konwersja dokumentu Google do formatu PDF za pomocą Google Script Edytor

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

Odpowiedz

4

Błąd, ponieważ folder nie jest zdefiniowany. Jeśli zastąpisz go funkcją DriveApp, plik PDF zostanie utworzony w folderze głównym, a funkcja będzie działać. Możesz także wyświetlić pełny adres URL w oknie wiadomości.

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

dziękuję za odpowiedzi i wyjaśnienia mój błąd. Innym pytaniem jest to, czy zapisany plik można zapisać w tym samym folderze co plik, który konwertujesz? –

2

Aby zapisać plik PDF w oryginalnym katalogu:

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

i dodać ogólną funkcję

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