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

使用Google Apps Script获取指定Google Sheets的工作表数量

适配改造方案

完全可以对原有代码做扩展改造,以下是支持传入文件ID、Google工作簿URL、文件名三种参数的自定义函数实现,同时做了错误兼容处理。

完整实现代码
function getNumSheets(input) {
  // 空输入直接返回0
  if (!input) return 0;
  let fileId = '';
  const inputStr = input.toString().trim();

  // 1. 优先从URL中提取文件ID
  const urlMatch = inputStr.match(/\/d\/([a-zA-Z0-9-_]+)/);
  if (urlMatch) {
    fileId = urlMatch[1];
  } 
  // 2. 匹配纯文件ID格式(Google Drive文件ID长度为33-44位,仅含字母、数字、-、_)
  else if (/^[a-zA-Z0-9-_]{33,44}$/.test(inputStr)) {
    fileId = inputStr;
  } 
  // 3. 按文件名搜索匹配的Google表格文件
  else {
    const files = DriveApp.getFilesByName(inputStr);
    let sheetFile = null;
    // 遍历结果,取第一个匹配的Google工作簿
    while (files.hasNext()) {
      const file = files.next();
      if (file.getMimeType() === MimeType.GOOGLE_SHEETS) {
        sheetFile = file;
        break;
      }
    }
    if (!sheetFile) return "未找到对应名称的Google工作簿";
    fileId = sheetFile.getId();
  }

  try {
    // 打开目标工作簿统计工作表总数
    const targetSpreadsheet = SpreadsheetApp.openById(fileId);
    return targetSpreadsheet.getSheets().length;
  } catch (e) {
    // 捕获权限不足、文件不存在、非Google表格等异常
    return "读取失败,请检查ID/URL/文件名是否正确、是否有文件访问权限、文件是否为Google工作簿格式";
  }
}
使用方法
  • 你清单里的GDrive_ID、URL、File_Name三个字段的单元格都可以直接作为参数传入:
    • 传入ID列单元格示例:=getNumSheets(A2)(假设A列存储GDrive_ID,数据从第2行开始)
    • 传入URL列单元格示例:=getNumSheets(D2)(假设D列存储文件URL)
    • 传入文件名列单元格示例:=getNumSheets(B2)(假设B列存储File_Name)
  • 第一次输入公式回车后会弹出授权提示,按流程完成账号授权即可正常返回结果。
注意事项
  • 优先使用文件ID或URL作为入参:按文件名搜索时如果存在重名文件,函数只会返回第一个匹配到的Google工作簿的工作表数,可能出现统计偏差。
  • 仅支持统计已转换为Google Sheets格式的工作簿:清单里原生.xls/.xlsx格式的Excel文件无法直接通过SpreadsheetApp读取,需要先转换为Google工作簿格式才能统计。
  • 如果返回错误提示,优先排查三个问题:传入的参数是否准确、当前账号是否有目标文件的查看权限、目标文件是否为Google Sheets格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 21:30:55