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

如何在Google Apps Script中导入PDF.js库以解析Drive中PDF至表格

如何在Google Apps Script中解析Drive文件夹内的PDF并提取文本到Sheet

问题背景

我需要解析Google Drive指定文件夹中的多个PDF文件,将提取到的文本内容写入Google Sheet。此前已掌握Gmail解析方法,具备相关开发基础。

目前遇到的问题:

  • 调研得知需导入PDF解析类库到脚本编辑器,尝试使用PDF.js但找不到对应的脚本ID,于是打算将PDF.js代码复制到脚本文件中作为库调用
  • 已从GitHub下载PDF.js的Zip包,但不确定该复制哪个文件(比如是否是Builder.js),首次使用GitHub
  • 当前脚本仅能获取PDF文件名,无法提取文本内容,现有代码如下:
function getPDFfiles () {

const pdfFolder = DriveApp.getFolderById("myfolderid");
const files = pdfFolder.getFilesByType(MimeType.PDF);

let pdfNames = []

while (files.hasNext()) {
    const file = files.next();
    const fileName = file.getName();
  pdfNames.push([fileName]);
  }


generator.getRange(2, 1, pdfNames.length, pdfNames[0].length).setValues(pdfNames);


}; // getPDFfiles function ends

解决方案

1. 不要直接使用PDF.js源码文件

PDF.js是为浏览器环境设计的,直接复制源码到Google Apps Script(GAS)中会因为环境差异(如DOM依赖、异步API不兼容)报错,完全没必要这么做。推荐使用适配GAS的方案或Google官方API。

2. 两种可行的PDF文本提取方法

方法一:使用Google Drive高级API(推荐)

无需额外导入库,直接调用官方API提取PDF文本:

  • 第一步:开启高级Drive服务
    在脚本编辑器中点击菜单栏资源 > 高级Google服务,找到Drive API并启用,点击确定。
  • 第二步:修改脚本添加文本提取逻辑
function getPDFfilesAndText() {
  const pdfFolder = DriveApp.getFolderById("your-folder-id"); // 替换为你的文件夹ID
  const files = pdfFolder.getFilesByType(MimeType.PDF);
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("generator"); // 替换为你的Sheet名称
  let pdfData = [];

  while (files.hasNext()) {
    const file = files.next();
    const fileName = file.getName();
    // 调用Drive API提取PDF文本
    const fileId = file.getId();
    const text = Drive.Files.export(fileId, "text/plain").getContentText();
    
    pdfData.push([fileName, text]);
  }

  // 将数据写入Sheet
  if (pdfData.length > 0) {
    sheet.getRange(2, 1, pdfData.length, pdfData[0].length).setValues(pdfData);
  }
}

方法二:使用适配GAS的PDF解析库

如果偏好第三方库,可以使用已发布的GAS适配库:

  • 第一步:导入库
    在脚本编辑器中点击资源 > 库,输入脚本ID 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF,选择最新版本,设置标识符为PDFParser,点击添加。
  • 第二步:编写提取逻辑
function getPDFtextWithLibrary() {
  const pdfFolder = DriveApp.getFolderById("your-folder-id");
  const files = pdfFolder.getFilesByType(MimeType.PDF);
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("generator");
  let pdfData = [];

  while (files.hasNext()) {
    const file = files.next();
    const fileName = file.getName();
    const pdfBlob = file.getBlob();
    const pdfText = PDFParser.parse(pdfBlob);
    
    pdfData.push([fileName, pdfText]);
  }

  if (pdfData.length > 0) {
    sheet.getRange(2, 1, pdfData.length, pdfData[0].length).setValues(pdfData);
  }
}

3. 特殊情况处理

如果PDF是扫描件(图片型PDF),上述方法无法提取文本,需要先调用Google Drive的OCR功能转换:

// 示例:将扫描件PDF转换为可提取文本的文档
function convertScannedPDF(fileId) {
  const resource = {
    title: "Converted PDF",
    mimeType: MimeType.GOOGLE_DOCS
  };
  const options = {
    ocr: true,
    ocrLanguage: "zh-CN" // 根据PDF语言调整
  };
  const convertedFile = Drive.Files.copy(resource, fileId, options);
  // 从转换后的文档提取文本
  const doc = DocumentApp.openById(convertedFile.id);
  const text = doc.getBody().getText();
  doc.saveAndClose();
  Drive.Files.remove(convertedFile.id); // 可选:删除临时转换的文档
  return text;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:55:18