#amazon-web-services #amazon-s3 #google-apps-script #google-docs-api
Вопрос:
Я пытаюсь загрузить текущий активный документ из сценария Google apps в Amazon S3 с помощью кода ниже https://github.com/eschultink/S3-for-Google-Apps-Script и инструкции https://engetc.com/projects/amazon-s3-api-binding-for-google-apps-script/
Загрузка файла в Amazon S3 прошла успешно, но «Не удалось загрузить PDF-документ». при открытии файла из S3. Похоже, файл был поврежден во время загрузки в
S3 var blob = DocumentApp.getActiveDocument().getAs('application/pdf');
var s3 = new S3('XXXXX', 'XXXX');
s3.putObject("bucket", blob.getName(), blob, {logRequests:true});
Комментарии:
1. s3 не определен
2. Почему вы используете сторонний API поверх AWS SDK, например AWS SDK для JavaScript?
3. Я пытаюсь запустить это в скрипте Google apps, и мне нужна только служба S3, поэтому я выбрал эту стороннюю библиотеку.
4. S3 определен, и загрузка работает, но при попытке доступа к загруженному файлу он выдает «Не удалось загрузить PDF-документ».
Ответ №1:
Я, следуя инструкциям в этом вопросе, могу решить проблему. https://github.com/eschultink/S3-for-Google-Apps-Script/issues/8
Изменения, которые необходимо внести, заключаются в
S3.gs строка 142: изменить запрос.setContent(object.getDataAsString()); на запрос.setContent(объект);
S3Request.gs строка 60: удалите строку, если (тип содержимого != ‘строка’) выбросить «содержимое должно быть передано в виде строки»
S3Request.gs строка 393: замените функцию следующей:
S3Request.prototype.hexEncodedHash = function(string) {
if(typeof string === "string")
return this.hex(Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, string, Utilities.Charset.UTF_8));
else
return this.hex(Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, string.getBytes()));
}