【问题标题】:Google apps script get range of bytes from binary file谷歌应用程序脚本从二进制文件中获取字节范围
【发布时间】:2020-08-28 09:10:18
【问题描述】:

我知道在Google Drive API 中,您可以请求获取某个范围内的文件的一部分:Range: bytes=500-999,但我在查看 Google Apps Script reference 时似乎找不到那里的等效功能。

有人有什么想法吗?

【问题讨论】:

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


    【解决方案1】:
    • 您要检索文件的部分正文。
    • 您希望使用 Google Apps 脚本实现此目的。

    如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

    为了实现the partial download,请在请求头使用Range: bytes=500-999

    示例脚本:

    作为一个简单的示例脚本,下面的脚本怎么样?在此脚本中,使用 Drive API 为文件 ID 的文件运行从 100 字节到 200 字节的部分下载。

    var fileId = "###";  // Please set the file ID.
    
    var start = 100;
    var end = 199;
    var url = "https://www.googleapis.com/drive/v3/files/" + fileId + "?alt=media";
    var params = {
      method: "get",
      headers: {
        Authorization: "Bearer " + ScriptApp.getOAuthToken(),
        Range: "bytes=" + start + "-" + end,
      },
    };
    var bytes = UrlFetchApp.fetch(url, params).getContent();
    Logger.log(bytes.length)
    
    • 运行脚本时,可以在日志中看到100
    • 很重要的一点,第一个字节的范围是0
    • 另外一点很重要,在 Google Apps 脚本中,blob 的最大大小为 50 MB(52,428,800 字节)。所以也请注意这一点。

    注意:

    • 作为另一个示例脚本,this 怎么样?

    参考资料:

    如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

    8 月 19 日更新:

    当我测试字节数组的最大大小时,我注意到规范已经改变。所以我将其添加为更新的规范。

    • 之前:最大 Blob 大小为 52,428,800 字节。准确的说,当超过50MB的blob转换为字节数组时,就会出现错误。这样,当将 50MB 的字节数组添加到 50MB 的字节数组时,就会发生与最大大小有关的错误。这是我之前测量的实验结果。

    • 现在:现在,当我再次测试这种情况时,虽然无法将 52,428,801 字节的文件作为字节数组检索(这是相同的规范。最大 blob 大小为 52,428,800 字节。) ,我注意到 52,428,800 字节的字节数组必须能够添加到 52,428,800 字节的字节数组中。至此,我可以确认可以创建 104,857,600 的字节数组。

    【讨论】:

    • 谢谢,天才,正是我想要的! (后来意识到可以从谷歌应用程序脚本中发出http请求)。只是关于您引用的脚本的快速说明:我注意到它涉及在谷歌电子表格中存储一个大文件。我可能有兴趣这样做来创建数据库,我需要能够在特定索引处写入 #1 块并在特定索引处读取 #2 块,你知道这是否可以用谷歌电子表格完成?意思是我可以在块位置#14(例如)写入 4kb 的数据,并在块索引处读取块吗?
    • blob 的最大大小为 50 MB(52,428,800 字节)。 最大获取大小为 50 或最大 blob 大小为 50?可以下载 50MB 的块并联合起来创建一个大 blob(比如 100MB)吗?
    • @TheMaster 在这种情况下,最大 blob 大小为 52,428,800 字节。准确的说,当超过50MB的blob转换为字节数组时,就会出现错误。这样,当将 50MB 的字节数组添加到 50MB 的字节数组时,就会发生与最大大小有关的错误。这是我之前测量的实验结果。
    • @TheMaster 但是现在,当我测试这种情况时,虽然无法将 52,428,801 字节的文件作为字节数组检索,但我注意到必须能够将 52,428,800 字节的字节数组添加到52,428,800 字节的字节数组。这样,我可以确认可以创建 104,857,600 的字节数组。发现 Google Apps Script 的规范发生了变化。
    • 供参考,我来自这个:stackoverflow.com/questions/63443643
    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多