尊敬的成员,
我在Google Apps脚本项目中建立了非常基本的HTML代码设置,该代码基本上验证了用户名和密码(只要该对是否存在于gSheet中),并且根据验证,我要么显示警报,要么重定向到另一个网页。当我将代码部署为Web应用程序时,HTML呈现得很好,提交按钮可以正常工作并执行gs代码,但是它不会将值返回给JS中script标签中的JS withSuccessHandler 函数HTML代码。
我在论坛上阅读了几个非常相同的查询,并遵循完全相同的路径,但是我无法成功。例如this post
似乎有些东西使我该死的眼睛和心灵看不见和丢失,因此决定请求您的友好帮助并重新定向我的问题。我非常感谢您的见解和帮助。
这是 HTML
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<form id="user_login">
<input type="text" name="userid" id="userid" placeholder="enter username"/>
<input type="text" name="pswrd" id="pswrd" placeholder="enter password"/>
<input type="submit" name="login" id="login" value="LOGIN"/>
</form>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$('#login').click(function() {
console.log("Form submitted...");
google.script.run
.withSuccessHandler(function(response) {
console.log(response);
if (response == true) {
window.open("http://www.google.com", "_self");
} else {
alert("Some alert message here")
}
})
.checkName({
userid: $('#userid').val(),
pswrd: $('#pswrd').val()
});
});
</script>
</body>
</html>
这是 gs功能
var html;
var verified;
function doGet() {
html = HtmlService.createTemplateFromFile('myformtest').evaluate().setTitle('Web App').setSandboxMode(HtmlService.SandboxMode.NATIVE);
return html
}
function checkName(form){
Logger.log("Form info > "+JSON.stringify(form));
Logger.log("Userid > "+form.userid);
Logger.log("Pwd > "+form.pswrd);
verified = false;
var ss = SpreadsheetApp.openById("1rard7vdpjmfrN81oi2ARhMlLGdNSxC7MqoIw2soj25E").getSheetByName("names");
var values = ss.getDataRange().getValues();
for(n=1;n<values.length;++n){
var username = values[n][0]; // 1 is the index of the column starting from 0
var password = values[n][1];
Logger.log("username: "+username+" | password: "+password);
if (username == form.userid && password == form.pswrd) {
Logger.log("User found in Row("+(n + 1)+")");
verified = true;
break;
}
}
Logger.log("User verified? "+verified);
return verified
}
通过将表单参数正确传递给gs函数以及正确执行gs函数,我可以记录到JS被正确触发。但是,它不会将 true / false 值返回给JS内部的处理函数。
我希望在执行 checkName 函数时,将变量的值返回给 withSuccessHandler 函数中要处理的JS,并通过重定向到确定的URL或显示警告消息。