Я создаю приложение Google Web App (которое представляет собой HTML-форму), которое будет загружать файл в папку на моем диске , Не требуется, чтобы файл загружался, поэтому будут моменты, когда этот ввод будет по существу «пустым». Приложение работает отлично, за исключением случаев, когда вы не выбираете файл для загрузки. Он выплевывает эту ошибку: «Исключение: извините, произошла ошибка сервера. Подождите немного и повторите попытку». У меня есть два файла: html-файл и .gs-файл. Вот они:Ошибка, когда <input type = "file"> пуст в представленной форме (скрипт приложения Google)
/* The script is deployed as a web app and renders the form */
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('FormFrontend.html');
}
/* This function will process the submitted form */
function uploadFiles(form) {
try {
/* Name of the Drive folder where the files should be saved */
var dropfolder = "Uploaded Files";
var folder, folders = DriveApp.getFoldersByName(dropfolder);
/* Find the folder, create the folder if it does not exist */
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropfolder);
}
/* Get the file uploaded though the form as a blob */
var blob = form.myFile;
var file = folder.createFile(blob);
var urlstr = file.getUrl()
/* Set the file description as the name of the uploader */
file.setDescription("Uploaded by " + form.ContactName);
/* Write response to spreadsheet */
var ss = SpreadsheetApp.openById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
var responses = ss.getSheetByName("Responses");
responses.appendRow([form.CompanyName, form.ContactName, form.PhoneNumber, form.Email, form.Date, form.Severity, form.Details, urlstr])
/* As long as there's no errors you should se the below text */
return "Form Submitted Successfully "
} catch (error) {
/* If there's an error, show the error message */
return error.toString();
}
}
<html>
<body>
<!-- This is the actual HTML form -->
<div id="theform">
<form id="myForm">
<p style="font-size:30px">Customer Form</p>
Company Name:
<input type="text" name="CompanyName">
<br>Contact Name:
<input type="text" name="ContactName">
<br>Phone Number:
<input type="text" name="PhoneNumber">
<br>Contact Email:
<input type="email" name="Email">
<br>Date:
<input type="date" name="Date">
<br>Overall Severity: (1 Lowest, 5 Highest)
<br>
<input type="number" name="Severity" min="1" max="5" value="1">
<br>Details:
<br>
<textarea name="Details" rows=10 cols=65></textarea>
<br>
<br>Additional File (Optional):
<input type="file" name="myFile">
<br>
<!-- The submit button. It calls the server side function uploadFiles() on click -->
<input type="submit" value="Submit" onclick="this.value='Submitting..';
google.script.run.withSuccessHandler(fileUploaded)
.uploadFiles(this.parentNode);
return false;">
</form>
</div>
<!-- Here the results of the form submission will be displayed -->
<div id="output"></div>
</body>
</html>
<!-- The function will be called after the Google Script has executed -->
<script>
function fileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').innerHTML = status;
}
</script>
Если бы попытался положить заявление, если вокруг «/ * Получить файл закачанный хотя форма как двоичных объектов * /» раздел, который говорит ему, чтобы просто установить urlstr ничто, если form.myFile пуст, но он все равно не работает (но если вы выберете фактический файл, он все равно успешно завершен). Я также не смог получить ничего полезного для показа в журнале.
Я довольно новичок в Google App Script, поэтому любая помощь будет оценена!
Я также хочу упомянуть об этом [post] (http://stackoverflow.com/questions/23244180/html-service-server-function-with-a-form), если у кого-то есть проблемы с представлением формы файла при установке LastPass в вашем браузере. Это была небольшая проблема, с которой я боролся. – kickehy