【发布时间】:2015-08-28 20:36:41
【问题描述】:
在 Google Apps 脚本中,我在 HTML 页面中有一个表单,它应该在提交时将表单提交给函数。但是,当用户单击提交时,此消息会出现在控制台中。
Uncaught TypeError: Untaming of guest constructed objects unsupported: [object Object]
我正在使用code from Labnol 进行指导
所有代码如下:
code.gs
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('form.html');
}
function uploadFiles(form) {
try {
var dropbox = "Student Files";
var folder, folders = DriveApp.getFoldersByName(dropbox);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}
var blob = form.myFile;
var file = folder.createFile(blob);
file.setDescription("Uploaded by " + form.myName);
return "File uploaded successfully " + file.getUrl();
} catch (error) {
return error.toString();
}
}
HTML
<?!= include('bootstrap'); ?>
<?!= include('style'); ?>
<div class="container">
<div class="row bottom-margin">
<div class="col-xs-4">
<h1> THE FORM </h1>
</div>
</div>
<div class="span4">
<form id="form">
<div class="row bottom-margin">
<div class="col-xs-6">
<input type="text" class="form-control" name="firstname" placeholder="First name..">
</div>
</div>
<div class="row bottom-margin">
<div class="col-xs-6">
<input type="text" class="form-control" name="lastname" placeholder="Last name..">
</div>
</div>
<div class="row">
<div class="col-xs-6">
<p> How would like to receive your order? </p>
</div>
</div>
<div class="row bottom-margin">
<div class="span12">
<div class="col-xs-6">
<label class="radio-inline">
<input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> Mail ($1 charge)
</label>
<label class="radio-inline">
<input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> Locker Drop Off
</label>
<label class="radio-inline">
<input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> Meet at next Event etc.
</label>
</div>
</div>
</div>
<div class="row bottom-margin">
<div class="col-xs-4">
<input type="file" class="form-control" name="myFile">
</div>
</div>
<div class="row">
<div class="col-xs-2">
<button type="submit" class="btn btn-primary" value="Upload File"
onclick="this.value='Uploading..';
makeAlert($('#form'));
google.script.run.withSuccessHandler(fileUploaded)
.uploadFiles(this.parentNode.parentNode.parentNode.parentNode);
return false;">
Submit
</button>
</div>
</div>
</form>
</div>
</div>
<div id="output"></div>
<script>
function makeAlert(item){
console.log(item);
}
function fileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').innerHTML = status;
}
</script>
<?!= include('jquery'); ?>
<?!= include('bootstrapjs'); ?>
【问题讨论】:
-
这是所有代码。 不完全...您使用
include()提取了您未提供的文件。你没有显示uploadFiles()。您不显示显示表单的 gs HtmlService 调用。简而言之:这不是minimal reproducible example。与其期望我们找出您没有显示的部分,您能否付出一些努力来准确提供重现您的问题所需的内容?
标签: javascript html forms google-apps-script