我想通过Google Apps脚本将PDF格式的电子表格导出到特定文件夹中

问题描述

我想通过Google Apps脚本以 PDF 格式在特定文件夹中导出电子表格。

我已经编写了代码,但是它可以从文件夹中找到,但是我只想在特定的工作表中使用它,而不是从文件夹中使用。

请更正密码

function gdocToPDF() {
    var documentRootfolder = DriveApp.getFolderById("") // replace this with the ID of the folder that contains the documents you want to convert
    var pdfFolder = DriveApp.getFolderById(""); // replace this with the ID of the folder that the PDFs should be put in. 

    var documentRootFiles = documentRootfolder.getFiles()

    while(documentRootFiles.hasNext()) {
        createPDF(documentRootFiles.next().getId(),pdfFolder.getId(),function (fileID,folderID) {
            if (fileID) createPDFfile(fileID,folderID);
        })
    }
}


function createPDF(fileID,folderID,callback) {
    var templateFile = DriveApp.getFileById(fileID);
    var templateName = templateFile.getName();
    
    var existingPDFs = DriveApp.getFolderById(folderID).getFiles();

    //in case no files exist
    if (!existingPDFs.hasNext()) {
        return callback(fileID,folderID);
    }

    for (; existingPDFs.hasNext();) {

        var existingPDFfile = existingPDFs.next();
        var existingPDFfileName = existingPDFfile.getName();
        if (existingPDFfileName == templateName + ".pdf") {
            Logger.log("PDF exists already. No PDF created")
            return callback();
        }
        if (!existingPDFs.hasNext()) {
            Logger.log("PDF is created")
            return callback(fileID,folderID)
        }
    }
}

function createPDFfile(fileID,folderID) {
    var templateFile = DriveApp.getFileById(fileID);
    var folder = DriveApp.getFolderById(folderID);
    var theBlob = templateFile.getBlob().getAs('application/pdf');
    var newPDFFile = folder.createFile(theBlob);

    var fileName = templateFile.getName().replace(".",""); //otherwise filename will be shortened after full stop    
    newPDFFile.setName(fileName + ".pdf");
    }

解决方法

  • 您当前的代码遍历文件夹中的所有文件,并将其转换为pdf
  • 如果您只想转换一个文件-您需要知道其ID(或名称),但是如果您有多个同名文件,则后者是不明确的

简单地替换行

while(documentRootFiles.hasNext()) {
        createPDF(documentRootFiles.next().getId(),pdfFolder.getId(),function (fileID,folderID) {
            if (fileID) createPDFfile(fileID,folderID);
        })
    }

使用

myDocumentId = "" //insert here the id of the document in quesiton
        createPDF(myDocumentId,folderID);
        }