Вам необходимо разделить код скрипта Google Apps и код Javascript на стороне клиента:
код 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.");
}
}
код скрипта Google Apps на стороне сервера
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