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

Drive API转换15MB JPG为GDOCS遇Request Too Large错误求助

解决Drive API处理大文件OCR转GDOCS时的「Request Too Large」错误

你遇到的问题是因为Drive API v2的Files.insert普通上传接口对单次请求的文件大小有限制,15MB的文件超出了这个限制,所以触发了「Request Too Large」错误。要处理大文件,需要改用**可恢复上传(Resumable Upload)**方式,这种方式将文件元数据和内容分开传输,支持更大的文件尺寸。

以下是修改后的完整脚本,替换了原来的Drive.Files.insert调用,改用可恢复上传流程:

// 处理JPG转GDOCS并完成OCR,同时将原文件移至归档文件夹
function convertJpegToGdoc() {
  // 批量处理源文件夹中的JPG文件
  var files = DriveApp.getFolderById(srcFolderId).getFilesByType(MimeType.JPEG); 
  while (files.hasNext()) {
    var file = files.next();
    
    // 1. 构建文件元数据(指定目标文件名、文件夹、转成GDOCS格式)
    var fileMetadata = {
      title: file.getName(),
      parents: [{id: dstFolderId}],
      mimeType: MimeType.GOOGLE_DOCS
    };

    // 2. 初始化可恢复上传会话,获取上传URL
    var initOptions = {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
        'Content-Type': 'application/json'
      },
      payload: JSON.stringify(fileMetadata),
      muteHttpExceptions: true
    };
    var initResponse = UrlFetchApp.fetch('https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&ocr=true', initOptions);
    var uploadUrl = initResponse.getHeaders()['Location'];

    // 3. 通过上传URL传输文件内容
    var uploadOptions = {
      method: 'PUT',
      headers: {
        'Content-Type': file.getMimeType()
      },
      payload: file.getBlob().getBytes(),
      muteHttpExceptions: true
    };
    UrlFetchApp.fetch(uploadUrl, uploadOptions);
  }                          
                         
  // 将处理完的原文件移至归档文件夹
  var inputFolder = DriveApp.getFolderById(srcFolderId);
  var processedFolder = DriveApp.getFolderById(trshFolderId);
  var files = inputFolder.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    file.moveTo(processedFolder);
  }                          
}

关键说明

  1. 可恢复上传流程:先发送元数据获取上传会话URL,再通过该URL上传文件内容,避免单次请求过大的问题。
  2. 权限配置:确保脚本拥有足够的权限,需要在脚本编辑器中开启「显示appsscript.json清单文件」,并在清单中添加以下OAuth范围:
    "oauthScopes": [
      "https://www.googleapis.com/auth/drive",
      "https://www.googleapis.com/auth/script.external_request"
    ]
    
  3. 保留OCR功能:在初始化请求的URL中保留了&ocr=true参数,确保转换时完成OCR识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:12:23