GAS: «InternalError: длина массива превышает поддерживаемый предел емкости». - PullRequest
0 голосов
/ 26 сентября 2018

Я выполняю запросы URLFetchApp к серверу Amazon S3, чтобы извлечь аудиофайлы и переместить их на диск Google.HTTPResponse возвращается в формате XML.

Я запускаю следующий код для преобразования в работающий большой двоичный объект, который можно сохранить на Google Диске:

/*driveAppFolder, fileName, response are pre-defined variables from earlier in the program*/

var responseBlob = response.getBlob();
var driveAppFile = driveAppFolder.createFile(blob).setName(fileName);

Этот код работает безупречно до определенного размера.Я еще не понял ограничения, но я знаю, что файл размером 50 МБ (52657324 байта) будет препятствовать созданию большого двоичного объекта с ошибкой:

InternalError: Array length 52389150 exceeds supported capacity limit. 

Я понимаю, что аналогичная ошибка JavaScript была обработана здесь , но в настоящее время я заблокирован в рамках скрипта Google Apps.Есть ли способ, которым я могу обойти такого рода ограничения и получить BLOB-объект?

1 Ответ

0 голосов
/ 27 сентября 2018

Как насчет этого ответа?50 МБ - 52 428 800 байт.В Google Apps Script существует ограничение размера BLOB-объектов.Максимальный размер составляет 52 428 800 байт.Так что в вашей ситуации такая ошибка возникает.В вашей ситуации вы скачиваете такой большой файл.При загрузке, как насчет использования следующих методов?

  1. Использовать частичную загрузку по range.
  2. Использовать библиотеку для загрузки больших файлов с URL-адреса.
    • Эта библиотека использует частичную загрузку.

Ссылки:

Если они не были полезны для вашей ситуацииПрости.

...