I use Google Spreadsheet with macro to upload zip files and dump contained data on spreadsheet but it fails in some cases. It seems that there is a file size limit for uploading but I want to know its exact size. Is it described somewhere, hopefully on official document?
When uploading large file it results this on console;
Connection failure due to HTTP 0
And "large file" seems around 9 Mb as I tested with the following generated files;
$ dd if=/dev/urandom bs=8m count=1 of=works
$ dd if=/dev/urandom bs=9m count=1 of=fails
appsscript.json
{
"timeZone": "Asia/Tokyo",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"sheets": {
"macros": [{
"menuName": "showModal",
"functionName": "showModal"
}]
}
}
Code.gs
function showModal() {
const html = HtmlService.createTemplateFromFile("upload").evaluate();
SpreadsheetApp.getUi().showModalDialog(html, "Upload file");
}
function uploadFile(e) {
return `Uploaded: ${e.filename}`;
}
upload.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<form>
<input type="file" name="file" multiple />
</form>
</body>
<script>
const elemForm = document.querySelector("form");
const elemFile = document.querySelector("input[name=file]");
const handlerFormChange = function(event) {
event.preventDefault();
elemFile.disabled = true;
for (const file of elemFile.files) {
const fr = new FileReader();
fr.onload = function(e) {
const obj = {
filename: file.name,
bytes: [...new Int8Array(e.target.result)],
};
google.script.run.withSuccessHandler(response => {
alert(`[SUCCESS] ${response}`);
})
.withFailureHandler(response => {
console.error(response);
alert(`[FAIL] See console`);
}).uploadFile(obj);
};
fr.readAsArrayBuffer(file);
}
};
elemForm.addEventListener("change", handlerFormChange);
</script>
</html>