如何使用Google Apps Script创建客户命名子文件夹存储导出的PDF发票
Google Apps Script 发票PDF按客户分类存储修改方案
核心实现逻辑
- 在原总发票文件夹下,先校验当前客户对应的子文件夹是否存在
- 存在则直接使用该子文件夹存储PDF,不存在则先创建对应名称的子文件夹再存储
需要修改的代码片段
你只需要把原代码中var newFile = folder.createFile(blobs);这一行,替换为以下代码即可:
// 处理客户子文件夹逻辑 var customerName = employeeName; // 若客户名称存储在其他单元格,可自行修改取值规则,例如 ss.getRange("'Paycheck'!D5").getValue() var customerFolders = folder.getFoldersByName(customerName); var targetFolder; // 已存在同名客户文件夹则直接调用,不存在则新建 if (customerFolders.hasNext()) { targetFolder = customerFolders.next(); } else { targetFolder = folder.createFolder(customerName); } // 将PDF存入对应客户子文件夹 var newFile = targetFolder.createFile(blobs);
注意事项
- 若你表格里客户名称的存储位置不是当前的
'Paycheck'!C4,自行修改customerName的取值逻辑即可 - 相同客户名称不会重复创建文件夹,所有对应客户的发票都会自动归集到同一个子文件夹下
完整修改后代码
function makePDF() { // 获取当前激活的电子表格 var ss = SpreadsheetApp.getActiveSpreadsheet(); var token = ScriptApp.getOAuthToken(); var sheet = ss.getSheetByName("Paycheck"); // 生成导出链接 var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId()); var folderID = "1y2_Rw_4l4SZ1i7SaMJLW3953FI9YRTAs"; // 替换为你自己的invoices总文件夹ID var folder = DriveApp.getFolderById(folderID); var employeeName = ss.getRange("'Paycheck'!C4").getValue() var pdfName = employeeName + " - " + Utilities.formatDate(new Date(), "GMT+8", "yyyy-MM-dd"); // PDF导出参数配置 var url_ext = 'exportFormat=pdf&format=pdf' + '&size=letter' + '&portrait=true' + '&fitw=true&source=labnol' + '&sheetnames=false&printtitle=false' + '&pagenumbers=false&gridlines=false' + '&fzr=false' + '&gid='; // 导出指定工作表为PDF var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), { headers: { 'Authorization': 'Bearer ' + token } }); // 转换为二进制文件对象并命名 var blobs = response.getBlob().setName(pdfName + '.pdf'); // 处理客户子文件夹逻辑 var customerName = employeeName; // 若客户名称存储在其他单元格,可自行修改取值规则 var customerFolders = folder.getFoldersByName(customerName); var targetFolder; // 已存在同名客户文件夹则直接调用,不存在则新建 if (customerFolders.hasNext()) { targetFolder = customerFolders.next(); } else { targetFolder = folder.createFolder(customerName); } // 将PDF存入对应客户子文件夹 var newFile = targetFolder.createFile(blobs); Logger.log("已使用存储空间: " + DriveApp.getStorageUsed()); }
内容的提问来源于stack exchange,提问作者Dum Acco
相关产品推荐
相关产品推荐

