如何通过REST API将Google Doc转换为PDF(无需下载重传)
问题根因
你之前调用Files:update修改mimeType字段的方案本身无法实现格式转换:
- 该接口的
mimeType参数仅用于声明你上传的二进制文件内容对应的格式,仅对用户上传的非Workspace原生文件生效 - Google Doc是Google Workspace托管的在线编辑原生格式,无法通过修改元数据字段直接切换文件格式,接口返回成功仅代表字段提交成功,后续Drive会自动校验回滚无效的格式字段,所以文件实际不会发生转换。
无本地落盘的转换方案
完全不需要把文件下载到本地存储后再重新上传,通过两个API接口的内存级流传递即可直接在云端完成转换,适配共享云端硬盘场景,步骤如下:
- 调用
Files:export接口,传入待转换的Google Doc文件ID,指定导出格式为application/pdf,接口会直接返回PDF格式的二进制流,该流无需写入本地磁盘,直接在脚本内存中暂存即可 - 调用
Files:create接口上传内存中的PDF二进制流,请求时携带参数supportsAllDrives=true开启共享盘支持,指定目标存放的父文件夹ID为你需要的共享盘路径,即可直接在对应位置生成转换后的PDF文件 - 如果需要复用原Doc的文件名,只需要在create请求中将
name字段设置为原Doc的文件名加.pdf后缀即可,权限设置也可以直接在该请求中同步配置,和普通文件上传逻辑一致
注意:使用该方案时,授权账号需要同时拥有原Google Doc的查看权限、以及共享盘目标路径的写入权限即可,转换全程文件不会落地到你的脚本运行环境,不存在本地存储开销。Deluge脚本原生支持将前一个HTTP请求的响应流直接作为下一个请求的请求体传递,不需要额外做流的本地存储处理。
内容的提问来源于stack exchange,提问作者Moses Nester
相关产品推荐
相关产品推荐

