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
相关产品推荐
相关产品推荐

