如何获取我自己的 Google Drive 文件的 md5Checksum 字段(仅通过使用类和对象,无需 http 请求)?

Bin*_*osh 2 javascript google-apps-script google-drive-api

我想检查我在 google 驱动器上上传的文件的 md5 校验和(在同一个 google 帐户内)。

我想使用 Google Apps 脚本 (script.google.com) 来执行此操作。

我已经彻底阅读了文档,但仍然不明白如何获取文件的元数据。

我发现很多使用 webAPI (v2,v3) 的例子,但它需要处理 OAuth 令牌、解析 http 响应...那么为什么会有 Google Apps 脚本呢?

这是我的工作示例,从名为“test”的文件夹中获取文件 id = 文件名,但我想调用 md5Checksum attr...

function testDrive(){
  var collectionFolder = DriveApp.getFoldersByName('test');
  if (collectionFolder.hasNext()){
    var itemFolder = collectionFolder.next();
    var collectionFile = itemFolder.getFiles();
    while(collectionFile.hasNext()){
      var itemFile = collectionFile.next();
      Logger.log(itemFile.getId(),'=',itemFile.getName());
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

PS:我曾经做过自己的校验和(sha256)函数来处理每个获取的文件 blob(二进制),但每个 blob 的限制约为 25mb。

Ale*_*dro 6

解决方案

文档中,您可以看到File资源在其 JSON 表示形式中包含md5Checksum

md5Checksum由于DriveApp 类没有包装器,因此您必须使用高级 Google 服务。此功能允许您通过 Apps 脚本环境使用 Drive API 的相同功能。在 Apps 脚本编辑器中单击Resources>Advanced Google services...>Drive API (v2)。IDE 将在您第一次运行函数时处理授权。

md5Checksum以下是使用 Drive API 高级服务检索云端硬盘文件的示例:

let files = Drive.Files.list();
for (item of files.items) {
    Logger.log(item['md5Checksum']);
}
Run Code Online (Sandbox Code Playgroud)

注意:此文件内容的 MD5 校验和。仅当内容存储在 Google 云端硬盘中的文件时,才会填充此字段;它不填充 Google 文档或快捷方式文件。

参考

驱动API

高级谷歌服务