使用OCR将PDF转Google Doc时遇Drive.Files.insert不是函数报错求助
问题:OCR转换PDF为Google Doc时提示
Drive.Files.insert is not a function 我尝试通过OCR将多个PDF文件转换为Google Doc以读取数据,参考示例使用Drive.Files.insert(),但始终报错。以下是我的代码实现:
function getFiles() { try { let id = SpreadsheetApp.getActiveSpreadsheet().getId(); let file = DriveApp.getFileById(id); let folders = file.getParents(); let folder = folders.next(); let files = folder.getFilesByType("application/pdf"); while( files.hasNext() ) { file = files.next(); console.log(file.getName()); readData(file); } } catch(err) { console.log("Error in getFiles: "+err); } } function readData(file) { try { let blob = file.getBlob(); let name = blob.getName(); let resource = { title: name, mimeType: blob.getContentType(), }; // Save PDF as GDOC resource.title = name.replace(/pdf$/, 'gdoc'); var insertOpts = { ocr: true, ocrLanguage: "en" } let gdocFile = Drive.Files.insert(resource, blob, insertOpts); } catch(err) { console.log("Error in readData: "+err) } }
报错信息:
10:50:09 AM Info Error in readData: TypeError: Drive.Files.insert is not a function
解决建议
1. 替换过时的API方法
Drive.Files.insert()是Drive API v2的方法,当前Google Apps Script默认使用Drive API v3,该方法已被移除,需替换为Drive.Files.create()。同时v3版本中,文件标题字段从title改为name,需明确指定目标格式为Google Doc的MIME类型。
2. 修改后的readData函数
function readData(file) { try { let blob = file.getBlob(); // 移除PDF后缀,生成Google Doc文件名 let docName = blob.getName().replace(/\.pdf$/i, ''); let resource = { name: docName, // 指定转换后的文件类型为Google Doc mimeType: 'application/vnd.google-apps.document' }; const createOpts = { ocr: true, ocrLanguage: "en" }; // 使用v3的create方法创建并转换文件 let gdocFile = Drive.Files.create(resource, blob, createOpts); console.log(`转换完成:${gdocFile.name}(文件ID:${gdocFile.id})`); } catch(err) { console.log("Error in readData: "+err); } }
3. 确保启用Drive API服务
在Apps Script编辑器中完成以下操作:
- 点击左侧菜单栏的「服务」→「添加服务」
- 找到「Drive API」,选择版本3,点击「添加」
- 如果提示需要在Google Cloud平台启用API,按照指引跳转启用即可
内容的提问来源于stack exchange,提问作者TheWizEd
相关产品推荐
相关产品推荐

