使用Google Script Editor将Google Doc转换为PDF

时间:2015-02-04 03:25:39

标签: pdf google-apps-script google-docs

我一直在尝试将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.');
  }
}

2 个答案:

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