我在Google表格上有一个表格ModalForm,可以在表格中插入行。它已经好几个月了。从提交表格后的上周开始,表格消失,不会重新显示。我不确定为什么。它可以很好地执行插入到电子表格中。我只是从来没有得到表格回来插入下一条记录。
在我的索引文件中,表单代码为:
<form id="myReceiveForm" name="receive" onsubmit="writeLine()">
Scanner Name : <input id="user" name="user" type="text" required /> <br> <br>
Reference Number: <input id="reference" name="reference" type="text" required /> <br> <br>
Location: <input id="location" name="location" type="text" pattern="[A-Z]{1,3}\-[A-Z]{1,2}\-\d{1,3}\-\d{1,2}" title="Location not in correct format." required/>
<button type="button" value="change" onclick="changeLocation()" >Change Location</button><br> <br>
Product SKU: <input id="sku" name="sku" type="text" value="" autofocus /> <br> <br>
<input type="submit" value="Submit" >
</form>
<script type="text/javascript">
function onSuccess() {
document.getElementById("sku").value = '';
document.getElementById("sku").focus();
return false;
}
function onFailureM(error) {
alert("Invalid Sku");
//alert("SKU" + document.getElementById("sku ").value +" doesn't exist.");
document.getElementById("sku").value = '';
document.getElementById("sku").focus();
}
window.writeLine = function () {
google.script.run
.withSuccessHandler(onSuccess)
.withFailureHandler(onFailureM)
.appendRowstoSheet(document.forms[0]);
}
</script>
在我的.gs文件中:
function openReceiving() {
var html = HtmlService.createHtmlOutputFromFile('index');
SpreadsheetApp.getUi().showModalDialog(html, '3PL RECEIVING');
答案 0 :(得分:2)
从上表单标记中删除onsubmit="writeLine()"
。更改提交按钮:
<input type="submit" value="Submit" >
到带有事件的常规按钮:
<input type="button" value="Submit" onmouseup="writeLine()">
这应该可以解决问题。 2015年11月12日,Google迁移到IFRAME模式。
除非明确指定了NATIVE模式,否则所有新脚本都将默认为IFRAME沙盒模式。
Google Apps Script Sunset Scedule
这可能是您的问题所在。表单提交会导致表单标记消失。这是常规HTML中长期存在的预期行为。但很长一段时间,HTML服务覆盖了这种行为。现在,IFRAME模式更像是常规的HTML行为。
在SKU输入字段中,如果您需要在更新最后一个字段后提交表单,请尝试添加onchange
属性:
<input id="sku" name="sku" type="text" value="" autofocus onchange="writeLine()"/>