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

如何通过Apps Script将Google Drive新建文件夹链接填入Google Sheet指定单元格并分享

可实现需求的完整Apps Script代码
function createClientAccountFolder(clientNamefolder) {
  // 替换为你存储所有客户文件夹的根目录ID
  const customerRoot = DriveApp.getFolderById('你的根文件夹ID');

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const databaseSheet = ss.getSheetByName("Clients");
  const lastAvailableRow = databaseSheet.getLastRow();
  // 第2列是客户名称,和你的原有逻辑一致
  const clientName = databaseSheet.getRange(lastAvailableRow, 2).getValue();
  // 第3列是客户邮箱,如果你存储邮箱的列不同,修改第二个参数即可(C列是3、D列是4以此类推)
  const clientEmail = databaseSheet.getRange(lastAvailableRow, 3).getValue();

  if (clientNamefolder && clientEmail) {
    // 创建客户主文件夹
    const mainFolder = customerRoot.createFolder(clientNamefolder);
    const folderUrl = mainFolder.getUrl();

    // 需求1:将超链接写入当前新增行的K列(第11列)
    databaseSheet.getRange(lastAvailableRow, 11).setFormula(`=HYPERLINK("${folderUrl}","${clientName}专属文件夹")`);

    // 需求2:给客户授予文件夹编辑权限
    mainFolder.addEditor(clientEmail);
    // 需求2:给客户发送通知邮件,标题和内容可自定义
    MailApp.sendEmail({
      to: clientEmail,
      subject: `${clientName} 专属服务文件夹已开通`,
      htmlBody: `
      <p>您好:</p>
      <p>您的服务专属文件夹已创建完成,点击即可访问:<a href="${folderUrl}" target="_blank">${folderUrl}</a></p>
      <p>我们已为您开通编辑权限,如有疑问可随时对接工作人员。</p>
      `
    })

    // 创建子文件夹
    const action_tracker =  mainFolder.createFolder(`[SEO] - Action Tracker [${clientNamefolder}]`);
    const audit =  mainFolder.createFolder(`[SEO] - Audits [${clientNamefolder}]`);
    // 补全原有代码缺失的content文件夹声明,解决变量未定义报错
    const content = mainFolder.createFolder(`[SEO] - Content [${clientNamefolder}]`);

    // 创建content下的子文件夹
    content.createFolder(`[${clientName}] Content Approved`);
    content.createFolder(`[${clientName}] Content Draft`);

    // 替换为你自己的模板表格ID
    const action_tracker_sheet = DriveApp.getFileById('你的Action Tracker模板表ID');
    const analytics_audit = DriveApp.getFileById('你的Analytics Audit模板表ID');

    // 移动模板文件到对应文件夹
    const moved_action_tracker_sheet = action_tracker_sheet.moveTo(action_tracker);
    const moved_analytics_audit = analytics_audit.moveTo(audit);

    // 修正原有代码的重命名逻辑错误
    SpreadsheetApp.openById(moved_action_tracker_sheet.getId()).rename(`${clientName} Action Tracker`);
    SpreadsheetApp.openById(moved_analytics_audit.getId()).rename(`${clientName} Analytics Audit`);

  } else {
    Logger.log('缺少客户名称或客户邮箱,未创建文件夹')
  }
}

// 测试函数
function test(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const databaseSheet = ss.getSheetByName("Clients");
  const lastAvailableRow = databaseSheet.getLastRow();
  const clientName = databaseSheet.getRange(lastAvailableRow, 2).getValue();
  createClientAccountFolder(clientName)
}

改动说明

  • 修复原有代码的两个核心报错:补全了缺失的content变量声明,修正了表格重命名的错误语法
  • 需求1实现:放弃了原有覆盖整个K列的写法,仅将超链接写入本次新增客户对应的最后一行的K列,不会影响历史数据
  • 需求2实现:新增了读取客户邮箱、为客户授予文件夹编辑权限、发送通知邮件的逻辑,邮件内容和列号可根据你的实际业务调整

注意事项

首次运行需要授权对应权限,触发方式可以保留你原来的HTML表单提交触发逻辑,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:04