Я внес небольшие изменения в ваш код:
HTML-файл
в вашем «sendFileToDrive» Я передал имя папки (в данном случае «Uploads») вашему «uploadFileToDrive» вВаш скрипт.
function sendFileToDrive(file) {
var reader = new FileReader();
reader.onload = function (e) {
var content = reader.result;
console.log('Sending ' + file.name);
// set the file's name where you want to set your files
var folderName = "UPLOADS"; // my desired destination folder
google.script.run.withSuccessHandler(updateProgressbar).uploadFileToDrive(content, file.name, folderName);
}
reader.readAsDataURL(file);
}
Чтобы сбросить значения в вашей форме после отправки, вы можете сделать это следующим образом (Имейте в виду, что это ванильный JS, поэтому в Интернете есть несколько способов добиться этого). this).
Запишите эту строку кода document.getElementById("myForm").reset();
в вашем "updateProgressbar"
function updateProgressbar( idUpdate ){
console.log('Received: ' + idUpdate);
numUploads.done++;
var porc = Math.ceil((numUploads.done / numUploads.total)*100);
$("#progressbar").progressbar({value: porc });
$(".progress-label").text(numUploads.done +'/'+ numUploads.total);
if( numUploads.done == numUploads.total ){
//uploadsFinished();
numUploads.done = 0;
// Reset the form's fields values
document.getElementById("myForm").reset();
};
}
Файл скрипта приложения
В вашем коде скрипта приложения я внес эти изменениясоздать папку из файла, который вы только что загрузили, и затем поместить его в папку «Uploads». Проблема, с которой вы столкнулись, состояла в том, что вы пытались создать новую папку в своем if-else, но с условием, которое у вас было, вы не собирались вводить часть кода для создания папки.
function doGet() {
return HtmlService.createHtmlOutputFromFile('form')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function uploadFileToDrive(base64Data, fileName, folderName) {
try{
var splitBase = base64Data.split(','),
type = splitBase[0].split(';')[0].replace('data:','');
var byteCharacters = Utilities.base64Decode(splitBase[1]);
var ss = Utilities.newBlob(byteCharacters, type);
ss.setName(fileName);
// Get your Uploads folder
var folders = DriveApp.getFoldersByName(folderName);
// Regex for splitting the file's extention like .pdf
var patt1 = /\.[0-9a-z]+$/i;
if (folders.hasNext()) {
var folder = folders.next();
// Create a folder with the name of the file you just uploaded in your root path
// DriveApp.createFolder(fileName.split(patt1)[0]);
// Create the file in your Uploads folder and a folder
var file = folder.createFile(ss);
folder.createFolder(fileName.split(patt1)[0]);
return file.getName();
} else return null;
} catch(e){
return 'Error: ' + e.toString();
}
}
РЕДАКТИРОВАТЬ
Обратите внимание, что в папке класса есть специальный метод, называемый createFolder(name)
, который позволит вам создать папку в текущей папке, с которой вы работаете, как я положил в своем обновленном коде. Обратитесь к ссылкам Обновленные документы для получения дополнительной информации.
Документы
Я использовал эти документы, чтобы помочь вам найти решение вашей проблемы: