将Google表格转换为跨驱动器帐户的PDF

时间:2018-06-14 02:37:06

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

我正在寻找一种方法来为我的所有Google表格实施自定义菜单选项,以创建该电子表格活动工作表的PDF。我使用Autocrat创建了许多我希望转换为PDF的Google表格。但是,我不想以PDF格式下载"每次,然后重新上传到我的驱动器。

我找到了一种使用Google Script在sample上创建PDF的方法,该方法与Google文档有关,而不是表格。所以我改为适合Sheets。我还在顶部添加了一个自定义菜单选项。结果是以下代码。



    function onOpen(e) {
   SpreadsheetApp.getUi()
       .createMenu('PDF')
       .addItem('Save PDF', 'convertPDF')
       .addToUi();
 }


function convertPDF() {
  doc = SpreadsheetApp.getActiveSpreadsheet();
  var docId = doc.getId();
  var docFolder = DriveApp.getFileById(docId).getParents().next().getId();
  var ui = SpreadsheetApp.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 = SpreadsheetApp.getActiveSpreadsheet().getAs('application/pdf');
    /* Add the PDF extension */
    docblob.setName(doc.getName() + ".pdf");
    var file = DriveApp.createFile(docblob);
    var fileId = file.getId();
    moveFileId(fileId, docFolder);
    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);
}




效果很好。它会创建电子表格的PDF并将其保存到包含原始电子表格的文件夹中。

但是,该代码特定于一张Google表格。我想知道是否有办法将这个应用到我打开的所有表格中。我找到了this page,但它已经很老了。它改变了吗?我是否需要在我想要的每个电子表格上安装它?当然,有一个更简单的方法,对吧?

我确定它很清楚,但我正在谈论通过网络界面使用Google云端硬盘。

0 个答案:

没有答案