javascript - 我如何在谷歌应用脚本中重定向到另一个 .html
问题描述
我正在尝试使用 Gas 和电子表格登录,我发现可以使用,但是当密码和用户正确时,它会向我显示警报(是),但是当 usr/pass 正确时,我需要重定向到另一个页面(在气体命名页面内) . 如果有人可以帮助我
登录.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('LogIN-CSS') ?>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<div class="wrapper fadeInDown">
<div id="formContent">
<!-- Tabs Titles -->
<!-- Icon -->
<div class="fadeIn first">
</div>
<!-- Login Form -->
<form id="myForm" onsubmit="handleFormSubmit(this)">
<input type="text" id="username" class="fadeIn second" name="username" placeholder="username">
<input type="text" id="password" class="fadeIn third" name="password" placeholder="password">
<input type="submit" id="btn" class="fadeIn fourth" value="Log In">
</form>
</div>
</div>
</body>
<script>
// Prevent forms from submitting.
function preventFormSubmit() {
var forms = document.querySelectorAll('form');
for (var i = 0; i < forms.length; i++) {
forms[i].addEventListener('submit', function(event) {
event.preventDefault();
});
}
}
window.addEventListener('load', preventFormSubmit);
function handleFormSubmit(formObject) {
google.script.run.withSuccessHandler(alertTest).checkAccountCredentials(formObject);
}
function alertTest(arg) {
arg ? acceptedAccountCredentials() : rejectedAccountCredentials();
}
function acceptedAccountCredentials()
{
alert("Yes");
}
function rejectedAccountCredentials()
{
alert("No");
}
</script>
</html>
这是 code.gs,用于评估用户和密码是否在我的电子表格中。
function doGet(e) {
if (!e.parameters.v) {
//Logger.log(e.parameters.v);
return HtmlService.createTemplateFromFile("LogIN").evaluate();
}
else {
//return HtmlService.createTemplateFromFile("page").evaluate();
}
}
function getScriptUrl() {
var url = ScriptApp.getService().getUrl();
Logger.log(url)
return url;
}
function formCheck(userInfo){
var branch = userInfo.branch
if (branch == "Select a Branch") {
alert("Branch must be selected!");
return false;
}
else
{
userClicked(userInfo)
}
}
function include(filename){
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
};
function userClicked(userInfo){
login_attempts = getSheet("Login Attempts");
login_attempts.appendRow([new Date(), userInfo.user, userInfo.pw]);
}
function checkAccountCredentials(formObject)
{
var username = formObject.username;
var password = formObject.password;
Logger.log(username);
Logger.log(password);
return isValidLogin(username, password) ? true : false;
}
function isValidLogin(username, password)
{
const registered_accounts = getSheet("Registered Accounts").getDataRange().getValues();
for(var i = 1; i < registered_accounts.length; i++)
{
if(registered_accounts[i][0] == username && registered_accounts[i][1] == password)
{
return true;
}
else
{
Logger.log("Finsihed checking row " + i);
//return false;
}
}
return false;
}
function getSheet(sheet_name)
{
const url = "https://docs.google.com/spreadsheets/d/1fch_Q0FGmNW58whEAInw85RA87n383_lFhr_itxpVJI/edit#gid=2025510419";
return SpreadsheetApp.openByUrl(url).getSheetByName(sheet_name);
}
此功能适用于我需要重定向的页面,这只是将数据解析到我的电子表格中。
function userClicked(name,patente,date,ori,des){
var url ="https://docs.google.com/spreadsheets/d/1fch_Q0FGmNW58whEAInw85RA87n383_lFhr_itxpVJI/edit#gid=0";
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("Data");
ws.appendRow([name,patente,date,ori,des]);
// Logger.log(test + "nada");
}
解决方案
不久前发现了这颗宝石。将归功于创作者,但从那以后一直无法找到它......希望它有所帮助!如果您想要示例表,请单击此处!
var conf = 'config'
var ss = SpreadsheetApp.openById(ID)
function doGet(e) {
if (Object.keys(e.parameter).length === 0) {
var htmlFile
var sheetName = conf
var activeSheet = ss.getSheetByName(sheetName)
if (activeSheet !== null) {
var values = activeSheet.getDataRange().getValues();
for(var i=0, iLen=values.length; i<iLen; i++) {
if(values[i][0] == 'Passcode') {
var passCheck = activeSheet.getRange(i+1, 2).getValues()
if(passCheck == lock) {
htmlFile = 'Dashboard'
activeSheet.getRange(i+1, 2).clearContent()
} else {
htmlFile = 'Login'
}
}
}
} else {
config()
htmlFile = 'Login'
}
return HtmlService.createHtmlOutputFromFile(htmlFile);
}
}
function removeEmptyColumns(sheetName) {
var activeSheet = ss.getSheetByName(sheetName)
var maxColumns = activeSheet.getMaxColumns();
var lastColumn = activeSheet.getLastColumn();
if (maxColumns-lastColumn != 0){
activeSheet.deleteColumns(lastColumn+1, maxColumns-lastColumn);
}
}
function validateUser(passcode) {
if (passcode == lock) {
var successMessage = 'Logging you in!';
config(passcode)
return successMessage
} else {
var errorMessage = 'Incorrect passcode :(';
return errorMessage
}
}
function config(passcode) {
var sheetName = conf
var activeSheet = ss.getSheetByName(sheetName)
if (activeSheet == null) {
activeSheet = ss.insertSheet().setName(sheetName);
activeSheet.appendRow (["Config"])
activeSheet.appendRow (["Lock"])
activeSheet.appendRow (["Passcode"])
removeEmptyColumns(sheetName);
activeSheet.setFrozenRows(1)
if (passcode !== undefined) {
var values = activeSheet.getDataRange().getValues();
var sheetRow;
for(var i=0, iLen=values.length; i<iLen; i++) {
if(values[i][0] == 'Passcode') {
sheetRow = i+1
activeSheet.getRange(sheetRow, 2).setValue(passcode)
}
}
}
} else {
var values = activeSheet.getDataRange().getValues();
var sheetRow;
for(var i=0, iLen=values.length; i<iLen; i++) {
if(values[i][0] == 'Passcode') {
sheetRow = i+1
activeSheet.getRange(sheetRow, 2).setValue(passcode)
}
}
}
}
function webAppURL(linkAddr) {
var linkAddr = ScriptApp.getService().getUrl()
return linkAddr
}
推荐阅读
- azure - 在 Azure Synapse 中预先计算 OLAP 多维数据集
- c - C函数指针使程序崩溃?
- mongodb - MongoDB Docker 初始化脚本
- ios - 如果初始化程序中未提供@Binding,如何使用@State
- matlab - 如何在 matlab 中选择交叉验证中的最佳模型?
- azure - ASP.NET Core 令牌获取异常
- python - 通过 HTML 和 SQL 炼金术表单更新数据库不起作用
- r - r 如何根据 Pr 值从 r 摘要(模型)中选择截距/变量
- python - ModuleNotFoundError:没有名为“samples.coco”的模块
- python-3.x - python3在命令中插入变量值