Convert Google Doc to PDF using Google Script Editior

≯℡__Kan透↙ 提交于 2019-12-17 16:21:39

问题


I've been trying to convert a Google Docs file to a PDF file without having to use the download option. Below is the script I have used in the Script Editor but it doesn't seem to work. I think the error is after the IF statement.

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

回答1:


It is failing because the folder is not defined. If you replace it with DriveApp, the PDF will be created in the root folder and your function would work. You can also show the full URL in the message box.

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



回答2:


To save the PDF in the original directory:

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

And add this generic function

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


来源:https://stackoverflow.com/questions/28312992/convert-google-doc-to-pdf-using-google-script-editior

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!