我在谷歌应用程序脚本中有这个现有的代码,它命令我的工作将其转换为pdf文件,并将转到它的文件夹。
示例:
我正在制作发票,它会自动转换为PDF,所有PDF文件都会转到另一个文件夹名称";发票";,客户的所有发票都将收集在那里。
然而,我需要将这些pdf文件分开,并创建以客户命名的文件夹。也就是说,在文件夹发票中,我需要根据客户的名称命名另一个文件夹,在客户的文件夹中,他们所有的发票都会聚集在那里。
然而,我无法获得正确的代码。我现在应该在代码中添加哪些可能的代码?
function makePDF() {
// Get the currently active spreadsheet URL (link)
var ss = SpreadsheetApp.getActiveSpreadsheet();
var token = ScriptApp.getOAuthToken();
var sheet = ss.getSheetByName("Paycheck");
//Creating an exportable URL
var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());
var folderID = "1y2_Rw_4l4SZ1i7SaMJLW3953FI9YRTAs"; // Folder id to save in a folder.
var folder = DriveApp.getFolderById(folderID);
var employeeName = ss.getRange("'Paycheck'!C4").getValue()
var pdfName = employeeName + " - " + Utilities.formatDate(new Date(), "GMT+8", "yyyy-MM-dd");
/* Specify PDF export parameters
From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
*/
var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
+ '&size=letter' // paper size legal / letter / A4
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true&source=labnol' // fit to page width, false for actual size
+ '&sheetnames=false&printtitle=false' // hide optional headers and footers
+ '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&gid='; // the sheet's Id
// Convert individual worksheet to PDF
var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {
headers: {
'Authorization': 'Bearer ' + token
}
});
//convert the response to a blob
var blobs = response.getBlob().setName(pdfName + '.pdf');
//saves the file to the specified folder of Google Drive
var newFile = folder.createFile(blobs);
// Define the scope
Logger.log("Storage Space used: " + DriveApp.getStorageUsed());
}
我相信您的目标如下。
- 您想要创建一个值为
pdfName
的新文件夹,并将创建的PDF文件放在该文件夹中
在这种情况下,按如下方式修改脚本如何?
发件人:
//convert the response to a blob
var blobs = response.getBlob().setName(pdfName + '.pdf');
//saves the file to the specified folder of Google Drive
var newFile = folder.createFile(blobs);
收件人:
//convert the response to a blob
var blobs = response.getBlob().setName(pdfName + '.pdf');
// I added below script.
var folders = folder.getFoldersByName(pdfName);
folder = folders.hasNext() ? folders.next() : folder.createFolder(pdfName);
//saves the file to the specified folder of Google Drive
var newFile = folder.createFile(blobs);
- 在该修改中,如果
var folder = DriveApp.getFolderById(folderID);
的文件夹中已经存在相同的文件夹,则将该文件放在现有文件夹中。当文件夹中不存在相同的文件夹时,pdfName
会在var folder = DriveApp.getFolderById(folderID);
的文件夹下创建一个新文件夹,并将文件放入创建的文件夹中
参考文献:
- getFoldersByName(名称)
- createFolder(名称)