2015-02-04 11 views
5

Ich habe versucht, eine Google Docs-Datei in eine PDF-Datei zu konvertieren, ohne die Download-Option verwenden zu müssen. Unten ist das Skript, das ich im Skript-Editor verwendet habe, aber es scheint nicht zu funktionieren. Ich denke, der Fehler ist nach der IF-Anweisung.Konvertieren von Google Doc in PDF mit Google Script Editor

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

Antwort

4

Es schlägt fehl, weil der Ordner nicht definiert ist. Wenn Sie es durch DriveApp ersetzen, wird das PDF im Stammordner erstellt und Ihre Funktion funktioniert. Sie können auch die vollständige URL im Meldungsfeld anzeigen.

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

Dank für Ihre Antwort danken und meine Fehler zu erklären. Eine weitere Frage ist, ob die gespeicherte Datei im selben Ordner wie die konvertierte Datei gespeichert werden kann. –

2

Um das PDF im ursprünglichen Verzeichnis zu speichern:

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

und fügen Sie diese generische Funktion

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