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

Google Apps Script提取URL的PDF内容写入Google Sheet无报错不生效求助

问题排查与修复方案

原代码核心错误点

  • 代码执行提前终止:OpenFile 函数中提取到PDF文本后直接执行了 return text,后续的匹配逻辑属于死代码,完全不会运行
  • 调用了不存在的变量与函数:代码中用到的 getDocItems 函数、docID 变量均未定义,匹配逻辑本身无法生效
  • 流程未串联:OpenFile 和 importToSpreadsheet 两个函数独立运行,提取结果没有传递到写入表格的步骤
  • 冗余文件残留:OCR生成的临时Google文档没有清理,会持续占用网盘空间

修正后可直接运行的代码

// 请将下方SS的值替换为你自己的电子表格ID
const SS = "";
const SHEET = "MSCI";

function main() {
  const extractedNumber = extractTargetNumberFromPdf();
  if (extractedNumber) {
    writeToSheet(extractedNumber);
  }
}

function extractTargetNumberFromPdf() {
  const url = "https://www.yardeni.com/pub/mscipe.pdf";
  const blob = UrlFetchApp.fetch(url).getBlob();
  const resource = {
    title: blob.getName(),
    mimeType: blob.getContentType()
  };
  // 插入临时文件做OCR
  const file = Drive.Files.insert(resource, blob, {ocr: true, ocrLanguage: "en"});
  const docId = file.id;
  try {
    const doc = DocumentApp.openById(docId);
    const text = doc.getBody().getText();
    // 匹配规则:提取Emerging Markets ( 和 最近的)之间的内容
    const startStr = "Emerging Markets (";
    const startIndex = text.indexOf(startStr);
    if (startIndex === -1) return null;
    const endIndex = text.indexOf(")", startIndex + startStr.length);
    if (endIndex === -1) return null;
    const target = text.slice(startIndex + startStr.length, endIndex).trim();
    // 转数字返回
    return isNaN(Number(target)) ? target : Number(target);
  } finally {
    // 不管成功失败都删除临时文件
    Drive.Files.remove(docId);
  }
}

function writeToSheet(value) {
  const sheet = SpreadsheetApp.openById(SS).getSheetByName(SHEET);
  sheet.getRange("B2").setValue(value);
}

使用前准备

  • 替换代码中SS常量的值为你自己的谷歌电子表格ID
  • 启用高级Drive API服务:在Apps Script编辑器左侧点击「服务」→ 找到「Drive API」→ 点击添加
  • 首次运行选择main函数执行,按提示完成账号授权即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:10