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

基于单元格值将新建Google Doc移至对应文件夹或创建新文件夹

修改后的Google Apps Script代码
function createNewGoogleDocs() {
  // 替换为你的模板文档ID
  const googleDocTemplate = DriveApp.getFileById("你的模板文档ID");
  // 替换为父文件夹ID(所有客户文件夹将创建在此文件夹下)
  const parentFolder = DriveApp.getFolderById("你的父文件夹ID");
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Overview');
  const rows = sheet.getDataRange().getValues();

  rows.forEach(function(row, index) {
    if(index === 0) return; // 跳过表头
    if (row[16]) return; // 跳过已生成文档的行

    const customerName = row[4]; // E列内容(索引从0开始)
    // 获取或创建客户对应的文件夹
    const targetFolder = getOrCreateFolder(parentFolder, customerName);
    
    // 复制模板文档到目标文件夹,文件名可按需调整
    const copy = googleDocTemplate.makeCopy(`${customerName} 专属文档`, targetFolder);
    const doc = DocumentApp.openById(copy.getId());
    const body = doc.getBody();

    // 替换文档中的占位符(保留原有替换逻辑,可按需扩展)
    body.replaceText('{{Customer}}', customerName);

    doc.saveAndClose();
    const url = doc.getUrl();
    sheet.getRange(index + 1, 17).setValue(url);
  });
}

// 辅助函数:查找指定文件夹,不存在则创建
function getOrCreateFolder(parentFolder, folderName) {
  try {
    const folders = parentFolder.getFoldersByName(folderName);
    if (folders.hasNext()) {
      return folders.next();
    } else {
      return parentFolder.createFolder(folderName);
    }
  } catch (e) {
    Logger.log("获取或创建文件夹时出错: " + e);
    throw e;
  }
}
关键修改说明
  • 动态目标文件夹逻辑:移除固定目标文件夹,改为通过getOrCreateFolder函数根据E列(row[4])内容,自动查找或创建对应文件夹。
  • 新增辅助函数:getOrCreateFolder负责检查父文件夹下是否存在同名文件夹,存在则直接返回,不存在则创建后返回,实现需求中的判断逻辑。
  • 动态文档命名:将复制后的文档名与客户名称绑定,便于识别对应关系,可根据需求调整命名规则。
  • 保留原有核心逻辑:保留跳过表头、跳过已生成行、占位符替换、写入文档URL到表格的功能,确保原有流程不受影响。
使用注意事项
  • 替换代码中的你的模板文档ID和你的父文件夹ID为实际ID值。
  • 若需在Drive根目录创建客户文件夹,可将parentFolder改为DriveApp.getRootFolder()。
  • 首次运行需完成授权流程,按照提示操作即可。

内容的提问来源于stack exchange,提问作者erlichb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:45:41