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

如何用脚本将Google Sheet的50个工作表转为独立电子表格并收集URL

解决方案:拆分Google Sheet工作表为独立文件并汇总URL

步骤1:准备必要ID

  • 目标Drive文件夹ID:打开指定文件夹,地址栏末尾的字符串即为ID(例如https://drive.google.com/drive/folders/XXXXXX中的XXXXXX)
  • 汇总URL的目标Google Sheet ID:打开目标汇总表,地址栏中d/与/edit之间的字符串即为ID
  • 源Sheet ID:若当前操作的就是源文件,可直接用SpreadsheetApp.getActiveSpreadsheet().getId()替代手动填写

步骤2:编写Google Apps Script

打开源Google Sheet,点击「扩展程序」→「Apps Script」,替换默认代码为以下内容:

function splitSheetsToFiles() {
  // 配置参数,替换为你的实际ID
  const sourceSpreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId();
  const targetFolderId = "你的目标Drive文件夹ID";
  const summarySheetId = "你的汇总URL的SheetID";

  // 初始化资源
  const sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId);
  const targetFolder = DriveApp.getFolderById(targetFolderId);
  const summarySpreadsheet = SpreadsheetApp.openById(summarySheetId);
  const summarySheet = summarySpreadsheet.getSheetByName("汇总表") || summarySpreadsheet.insertSheet("汇总表");
  
  // 重置汇总表并设置表头
  summarySheet.clearContents();
  summarySheet.getRange("A1:C1").setValues([["原工作表名称", "创建时间", "新文件URL"]]);

  // 遍历所有工作表
  const sheets = sourceSpreadsheet.getSheets();
  let currentRow = 2;

  sheets.forEach(sheet => {
    const sheetName = sheet.getName();
    // 可添加跳过规则,比如跳过汇总表:if (sheetName === "汇总表") return;

    // 创建新电子表格
    const newSpreadsheet = SpreadsheetApp.create(sheetName, sheet.getMaxRows(), sheet.getMaxColumns());
    // 移动到指定文件夹
    const newFile = DriveApp.getFileById(newSpreadsheet.getId());
    targetFolder.addFile(newFile);
    DriveApp.getRootFolder().removeFile(newFile);

    // 复制原表数据(保留值和格式)
    const sourceRange = sheet.getDataRange();
    const targetRange = newSpreadsheet.getSheets()[0].getRange(1, 1, sourceRange.getNumRows(), sourceRange.getNumColumns());
    sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES_AND_FORMATTING, false);

    // 记录到汇总表
    summarySheet.getRange(currentRow, 1).setValue(sheetName);
    summarySheet.getRange(currentRow, 2).setValue(new Date());
    summarySheet.getRange(currentRow, 3).setValue(newSpreadsheet.getUrl());
    
    currentRow++;
    // 避免触发API限制,每处理10个表暂停1秒
    if (currentRow % 10 === 0) Utilities.sleep(1000);
  });

  SpreadsheetApp.getUi().alert("拆分完成,URL已汇总至指定表格!");
}

步骤3:配置并运行脚本

  1. 替换代码中targetFolderId和summarySheetId为你的实际ID
  2. 点击运行按钮,首次运行需完成权限授权(允许脚本访问Drive和Sheet)
  3. 等待运行完成,检查目标文件夹和汇总表

关键注意事项

  • API配额:50个工作表的操作在Google每日配额范围内,若后续拆分数量增加,建议分批处理
  • 数据保留规则:当前脚本复制值和格式,若需保留公式,将PASTE_VALUES_AND_FORMATTING改为PASTE_NORMAL
  • 重名处理:目标文件夹存在同名文件时,新文件会自动添加后缀(如「Sheet1 (1)」)
  • 跳过特定表:在sheets.forEach循环中添加判断语句,可跳过不需要拆分的工作表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:46:12