问题描述
我想通过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);
}