- Когда файлы отправляются, вы хотите создавать одну новую папку при каждой отправке.
- Вы хотите загрузить несколько файлов в созданную папку.
Если мойпонимание правильное, как насчет этой модификации?Пожалуйста, подумайте об этом как об одном из нескольких ответов.
Модифицированные сценарии:
HTML:
Пожалуйста, измените следующим образом.
С:
<input name="picToLoad" type="file" id="sampleFile" />
Кому:
<input name="picToLoad" type="file" id="files" multiple />
Javascript:
Пожалуйста, измените picUploadJs()
.
function picUploadJs(myForm) {
const f = document.getElementById("files");
google.script.run.withSuccessHandler((folderId) => { // Added
var files = [...f.files];
files.forEach((file, i) => {
const fr = new FileReader();
fr.onload = (e) => {
const data = e.target.result.split(",");
const obj = {fileName: file.name, mimeType: data[0].match(/:(\w.+);/)[1], data: data[1]};
document.getElementById('status').style.display = 'inline';
google.script.run.withSuccessHandler(() => {
if (i == files.length - 1) updateOutput();
}).processForm(obj, folderId); // Modified
}
fr.readAsDataURL(file);
});
}).createFolder();
}
Сценарий Google Apps:
Я разделил processForm()
на processForm()
и createFolder()
.
// Added
function createFolder() {
var dateTime = Utilities.formatDate(new Date(), "GMT+2", "dd-MM-yy_HH-mm");
var email = Session.getActiveUser().getEmail();
var parentFolder = DriveApp.getFolderById('xxxxx');
var newFolder = parentFolder.createFolder(email + "_" + dateTime);
var newFolderId = DriveApp.getFoldersByName(newFolder).next().getId();
return newFolderId;
}
// Modified
function processForm(theForm, newFolderId) {
var fileBlob = Utilities.newBlob(Utilities.base64Decode(theForm.data), theForm.mimeType, theForm.fileName);
var fldrSssn = DriveApp.getFolderById(newFolderId);
fldrSssn.createFile(fileBlob);
return true;
}
Примечание:
В вашем HTML верхняя строка выглядит следующим образом.
<form id="myForm" target="hidden_iframe" onsubmit="submitted=true;">
From yourпредыдущий вопрос , если вы используете следующие строки, пожалуйста, обновите ваш вопрос.Я предположил, что вы используете следующий скрипт.
<iframe name="hidden_iframe" id="hidden_iframe" style="display:none;" onload="if(submitted) { picUploadJs(myForm); }"></iframe>
<form id="myForm" action="https://docs.google.com/forms/d/e/xxx/formResponse" target="hidden_iframe" onsubmit="submitted=true;">
Если это не тот результат, который вы хотите, я прошу прощения.