【发布时间】:2013-11-12 10:25:30
【问题描述】:
我正在尝试使用脚本替换 Google Drive 文件夹中的 PDF 文件。由于 GAS 没有提供添加修订(版本)的方法,我试图替换文件的内容,但我得到的只是一个空白 PDF。
我无法使用 DriveApp.File 类,因为我们的管理员已禁用新 API,因此我必须改用 DocsList.File。
-
输入:
- OldFile.pdf(8 页)
- NewFile.pdf(20 页)
-
预期输出:
- OldFile.pdf 与 NewFile.pdf 内容相同
-
实际输出:
- OldFile.pdf 包含 20 个空白页。
流程:
var old = DocsList.getFileById("####");
var new = DocsList.getFileById("####");
old.replace(new.getContentAsString());
有什么想法吗? 提前非常感谢。
PS.:我也试过先调用 old.clear(),但我想说问题出在 getContentAsString 方法上。
【问题讨论】:
-
getContentAsString()闻起来像是根据某些字符编码进行一些解码,例如UTF-8,这将有效地破坏一些 PDF 内容,例如页面内容流通常被压缩,因此对变化非常敏感。 -
您是否需要保留与要求相同的文档 ID?如果没有,您可以简单地删除并重命名...
-
是的,我需要相同的 ID,因为它是从网络链接的。
-
您可以使用stackoverflow.com/a/24226885/1058108 的解决方案。基本上,您使用 Drive.Files.update(file, fileId, updatedBlob) API,如果您通过 Resources > Advanced Google Services > Drive API > ON 激活它就可以使用它
标签: file pdf google-apps-script google-drive-api