我在Google App脚本(表格)中有此HTML表单,该表单要求用户提供日期值,然后提交该值。 HTML表单运行。唯一的问题是obj不记录。我不知道为什么会这样。
HTML:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<form id="myForm">
<input type="date" name="startDate" value="" id="demo" >
<input type="button" style="font-family: verdana;" value="Submit" onclick="getStartDate()">
</form>
<script>
function success(msg) {
alert(msg);
}
function getStartDate(){
var form = document.getElementById("myForm").elements;
var obj ={};
for(var i = 0 ; i < form.length ; i++){
var item = form.item(i);
obj[item.name] = item.value;
}
google.script.run
.withSuccessHandler(success)
.getStartDate(obj);
google.script.host.close();
};
</script>
</body>
</html>
JavaScript:
function getStartDate(obj){
Logger.log(obj)
}
这应该输出对象,但是不会。
感谢您的帮助!
答案 0 :(得分:3)
此修改如何?
google.script.run
通过异步处理工作。因此,在您的脚本中,getStartDate()
和success()
由于google.script.host.close()
而无法运行。getStartDate()
不返回值。因此alert(msg)
显示为undefined
。当以上几点反映到您的脚本中时,它如下所示。
请按如下所示修改Javascript。
function success(msg) {
alert(JSON.stringify(msg)); // Modified
}
function getStartDate(){
var form = document.getElementById("myForm").elements;
var obj ={};
for(var i = 0 ; i < form.length ; i++){
var item = form.item(i);
obj[item.name] = item.value;
}
google.script.run
.withSuccessHandler(function(e) { // Modified
success(e);
google.script.host.close();
})
.getStartDate(obj);
};
加油站:
function getStartDate(obj){
Logger.log(obj)
return obj; // Modified
}
Submit
,请将name
添加到<input type="button" style="font-family: verdana;" value="Submit" onclick="getStartDate()">
。google.script.host.close()
移至success()
。如果这不是您想要的,请告诉我。我想修改它。