You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:15:05