【问题标题】:Drive PDF revision ids are being ignored驱动器 PDF 修订 ID 被忽略
【发布时间】:2014-11-13 22:23:22
【问题描述】:

这个之前出现过,与 Google Drive SDK 相关:How do I get exportLinks for revisions in Google Drive API

我的问题不在于获取 exportLinks - 只是 API 提供的那些不起作用。

这是Advanced Drive Service 文档中“列出修订”示例的修改版本,它记录了给定fileId 的每个修订的exportLinks

function listRevisions(fileId) {
  var revisions = Drive.Revisions.list(fileId);
  if (revisions.items && revisions.items.length > 0) {
    for (var i = 0; i < revisions.items.length; i++) {
      var revision = revisions.items[i];
      var date = new Date(revision.modifiedDate);
      Logger.log('Date: %s, PDF exportLink: %s',
          date.toLocaleString(),
          revision.exportLinks[MimeType.PDF] );
    }
  } else {
    Logger.log('No revisions found.');
  }
}

日志

以下是包含两个“主要”修订版的测试文档的示例日志。版本号在 exportLinks 中明确提供。

[14-11-13 16:40:50:511 EST] Date: November 13, 2014 4:35:55 PM EST,
 PDF exportLink: https://docs.google.com/feeds/download/documents/export/Export?id=1V2zkXfyRGh_6gnCXtWlII6sxMQEDcLApRrEk-giIE2s&revision=28&exportFormat=pdf
[14-11-13 16:40:50:512 EST] Date: November 13, 2014 4:37:51 PM EST,
 PDF exportLink: https://docs.google.com/feeds/download/documents/export/Export?id=1V2zkXfyRGh_6gnCXtWlII6sxMQEDcLApRrEk-giIE2s&revision=32&exportFormat=pdf

到目前为止,一切都很好。除了这些链接打开文档的相同版本......最新版本。 (来吧,试试看 - 文档是公开的。)

问题: 是否有某种格式的 exportLinks 可以实际下载指定的修订版? (即,也许“修订”参数应该命名为其他名称)

【问题讨论】:

  • 看起来像 PDF 格式导出修订版中的错误 - 请求的修订版 ID 被忽略,并且仅导出最新的修订版(头),无论在 url 中指定什么修订版 ID。所有其他导出格式(html、odt、docx、txt、rtf)导出正确的修订版 - 只有 PDF 是错误的。希望应该在这里监控 google-drive-sdk 标签的 Google 工程师之一(根据Drive SDK Support page)会注意到您的问题!
  • @azawaza:好点子!我更新了标题以专注于 PDF。它认为 PDF 是我唯一感兴趣的东西!

标签: google-apps-script google-drive-api


【解决方案1】:

Google 工程师使用下面显示的代码重现了该问题,并就此提出了内部错误报告。虽然示例代码在 Google Apps 脚本中,但问题出在 Google Drive 本身。

您可以通过访问Issue 4008 并在 问题跟踪器上加注星标来跟踪任何进展。

function test() {
  var content = Utilities.newBlob('Apple', 'text/plain');
  var file = {
    title: 'Test Document'
  };
  file = Drive.Files.insert(file, content, {
    convert: true
  });

  var doc = DocumentApp.openById(file.id);
  doc.getBody().appendParagraph('Banana');
  doc.saveAndClose();

  var oauthToken = ScriptApp.getOAuthToken();

  var revisions = Drive.Revisions.list(file.id).items;
  revisions.forEach(function(revision) {
    // revision = revisions[];
    Object.keys(revision.exportLinks).forEach(function(mimeType) {
      var link = revision.exportLinks[mimeType];
      var response = UrlFetchApp.fetch(link, {
        headers: {
          Authorization: 'Bearer ' + oauthToken
        }
      });
      var blob = response.getBlob();
      var parts = blob.getName().split('.');
      blob.setName(parts[0] + '-' + revision.id + '.' + parts[1]);
      DriveApp.createFile(blob);
    });
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多