[我正在尝试运行以下代码If语句,该语句仅与console.log()
一起运行,而单独由getElementById.click()
运行。但不结合时。我正在尝试使用Google Apps脚本重定向我的Web应用程序上的页面。
document.getElementById("login").addEventListener("click", submitL); //eventlistener for login
function submitL() {
var loginInfo = {}
loginInfo.email = document.getElementById.("email").value;
loginInfo.password = document.getElementById.("password").value;
var ss = SpreadsheetApp.openById("15rUIxS8w53bvPZvTKuOdGw-ZP6eWMaykVJ26vqGBkEg");
var ws = ss.getSheetByName("logindet");
var loginList = ws.getRange(2, 1, ws.getLastRow() - 1, 3).getValues();
var email = loginList.map(function (r) {
return r[0]
});
var password = loginList.map(function (r) {
return r[1]
});
var viewNameData = loginList.map(function (r) {
return r[2]
});
var loginEmail = loginInfo.email;
var loginPW = loginInfo.password;
for (var i = 0; i < email.length; i++) {
if ((loginEmail == email[i]) && (loginPW == password[i])) {
document.getElementById("load").click();
}
}
}
您需要分割您的Google Apps脚本代码和客户端Javascript代码:
document.getElementById("login").addEventListener("click", submitL); //eventlistener for login
function submitL() {
var loginInfo = {}
loginInfo.email = document.getElementById.("email").value;
loginInfo.password = document.getElementById.("password").value;
var email = loginList.map(function (r) {
return r[0]
});
var password = loginList.map(function (r) {
return r[1]
});
var viewNameData = loginList.map(function (r) {
return r[2]
});
var loginEmail = loginInfo.email;
var loginPW = loginInfo.password;
google.script.run.withSuccessHandler(onLoginResponse).logIn(loginEmail, loginPW);
}
function onLoginResponse(loggedIn) {
if (loggedIn) {
document.getElementById("load").click();
} else {
alert("Login unsuccessful, wrong credentials.");
}
}
function getLoginList() {
var ss = SpreadsheetApp.openById("15rUIxS8w53bvPZvTKuOdGw-ZP6eWMaykVJ26vqGBkEg");
var ws = ss.getSheetByName("logindet");
return ws.getRange(2, 1, ws.getLastRow() - 1, 3).getValues();
}
function logIn(loginEmail, loginPW) {
var loginList = getLoginList();
for (var i=0; i<loginList.length; i++) {
var row = loginList[i];
if (loginEmail == row[0] && loginPW == row[1]) {
// Found user
return true;
}
return false;
}
}
SpreadsheetApp无法从客户端访问,因此此分隔是必要的。在这种情况下,客户端要求服务器端使用logIn
和loginEmail
参数运行loginPW
功能。之后,它将处理该远程功能的响应。
google.script.run.withSuccessHandler(onLoginResponse).logIn(loginEmail, loginPW);
如果找到登录匹配项,则远程功能返回true
,否则返回false
。如果响应为肯定,则将执行document.getElementById("load").click();
语句。
请记住,该应用程序仍然可以被“黑客入侵”,因为仍然可以执行该按钮,即从开发者工具控制台中单击。如果您担心安全性,建议您学习并实施其他更安全的身份验证方法。
您可以在此链接中了解有关HTML服务通信(前端和后端)的更多信息:https://developers.google.com/apps-script/guides/html/communication