Продолжайте возвращать неопределенный от функции - PullRequest
0 голосов
/ 13 марта 2020

У меня возникли некоторые трудности с динамическим генерированием 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() }
    }
}
...