我使用Google Apps脚本和HTMLService创建了一个网络应用表单。
这是一个单页表单,底部有一个提交按钮。
提交后,表单会验证输入表单的数据是否有效,如果有效,则会将表单数据记录到电子表格中。
到目前为止一切都有效。
我现在需要将用户发送到确认页面,确认页面需要能够传递参数(在确认页面上显示某些信息)。
main.gs:
function doGet(e) {
var template = HtmlService.createTemplateFromFile('form');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function processFormSubmission(formData) {
Logger.log('starting processPoRequest');
Logger.log('po: ' + JSON.stringify(formData, null, 2));
// code for appending data to sheet here
}
form.html:
<!DOCTYPE html>
<form id="form1" name="form1">
<label for="info" id="info_label">Info</label>
<input id="info" name="info" type="text">
<input class="btn" id="button" onclick="onClickFunctions(document.getElementById('form1'))" type="submit" value="Submit">
</form>
<script>
function onClickFunctions(formData) {
console.log('starting onClickFunctions');
var allDataValid = validateForm(formData);
if (allDataValid === true) {
google.script.run.withSuccessHandler().processFormSubmission(formData);
}
}
function validateForm(form) {
console.log('starting validateForm');
var errors = 0;
var element = document.getElementById('info');
if (!form.info) { element.classList.add("validation_error"); errors++; if (errors === 1) element.focus(); }
else element.classList.remove("validation_error");
if (errors > 0) return false;
else return true;
}
</script>
confirmation.html的:
<!DOCTYPE html>
<?!= confirmationMessage ?>
我不知道要放入.withSuccessHandler()
的内容,以便将用户带到确认页面。
我已经广泛搜索了这个并在Stack Overflow上找到了这些结果,并且每个人都提出了一个不同的解决方案,但它们中没有一个实际包含解决方案的完整工作代码:
使用doPost的可能解决方案:
Send form by email and track responses in spreadsheet
HtmlService doPost With Google Docs Form
我搞砸了doPost,但我无法弄清楚如何调用它,我无法在HTMLService docs中找到任何官方文档。
使用href中的Web应用程序链接的可能解决方案:
如果我的按钮是一个看起来像按钮的链接,我不确定在点击链接时如何执行表单验证功能。
答案 0 :(得分:0)
我做了两种不同的方式。
或