У меня возникли некоторые трудности с динамическим генерированием c функции rootFolderId.
Я искал динамическое присвоение значения переменной rootFolder
на основе значения выбран переключатель. Но когда вызывается .createFolder(rootFolderId,folderName)
, возврат не определен.
Любая помощь, пожалуйста?
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="uploaderForm">
<label for="uploaderForm">Upload multiple Files</label>
<div>
<input type="text" name="applicantName" id="applicantName"
placeholder="Your Name">
</div>
<div class="row">
<p>Zgjidh lenden:</p>
<input type="radio" id="matematike" name="gender" value="1wP_QokwCiUv1cquU-eET7g5AuFITxE9d">
<label for="matematike">Matematike</label><br>
<input type="radio" id="dituri" name="gender" value="1I2aELHikX5f-uD6sCybQd7UevPK4WR3W">
<label for="dituri">Dituri Natyre</label><br>
<input type="radio" id="gjuhe" name="gender" value="18xvXUYQTHGQtmkJIti-S9trqwxTYEZ5P">
<label for="gjuhe">Gjuhe Shqipe</label>
</div>
<div>
<input type="text" name="applicantEmail" id="applicantEmail"
placeholder="Your Email">
</div>
<div>
<input type="file" name="filesToUpload" id="filesToUpload" multiple>
<input type="button" value="Submit" onclick="uploadFiles()">
</div>
</form>
<br>
<br>
<br>
<br>
<br>
<br>
<div id="output"></div>
<script>
var rootFolderId = function(){
$('#uploaderForm input[type=radio]').on('change', function(event) {
var result = $(this).val();
$('#rootFolderId').html(result);
console.log(result);
})
}();
var numUploads = {};
numUploads.done = 0;
numUploads.total = 0;
// Upload the files into a folder in drive
// This is set to send them all to one folder (specificed in the .gs file)
function uploadFiles() {
var allFiles = document.getElementById('filesToUpload').files;
var applicantName = document.getElementById('applicantName').value;
if (!applicantName) {
window.alert('Missing applicant name!');
}
var applicantEmail = document.getElementById('applicantEmail').value;
if (!applicantEmail) {
window.alert('Missing applicant email!');
}
var folderName = applicantName + ' ' + applicantEmail;
if (allFiles.length == 0) {
window.alert('No file selected!');
} else {
numUploads.total = allFiles.length;
google.script.run.withSuccessHandler(function(r) {
// send files after the folder is created...
for (var i = 0; i < allFiles.length; i++) {
// Send each file at a time
uploadFile(allFiles[i], r.folderId);
}
}).createFolder(rootFolderId, folderName);
console.log(rootFolderId);
}
}
function uploadFile(file, folderId) {
var reader = new FileReader();
reader.onload = function(e) {
var content = reader.result;
document.getElementById('output').innerHTML = 'uploading '
+ file.name + '...';
//window.alert('uploading ' + file.name + '...');
google.script.run.withSuccessHandler(onFileUploaded)
.uploadFile(content, file.name, folderId);
}
reader.readAsDataURL(file);
}
function onFileUploaded(r) {
numUploads.done++;
document.getElementById('output').innerHTML = 'uploaded '
+ r.fileName + ' (' + numUploads.done + '/'
+ numUploads.total + ' files).';
if (numUploads.done == numUploads.total) {
document.getElementById('output').innerHTML = 'All of the '
+ numUploads.total + ' files are uploaded';
numUploads.done = 0;
}
}
</script>
</body>
</html>
Функция createFolder()
:
function createFolder(parentFolderId, folderName)
{
try {
var parentFolder = DriveApp.getFolderById(parentFolderId);
var folders = parentFolder.getFoldersByName(folderName);
var folder;
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = parentFolder.createFolder(folderName);
}
return { 'folderId' : folder.getId() }
}
catch (e) {
return { 'error' : e.toString() }
}
}