Javascript 如何在google应用程序脚本中重定向到另一个.html

Javascript 如何在google应用程序脚本中重定向到另一个.html,javascript,html,google-apps-script,Javascript,Html,Google Apps Script,我试图用Gas和电子表格登录,我发现可以,但当密码和用户正确时,它会向我显示警报(是),但当usr/pass正确时,我需要重定向到另一个页面(Gas命名页面内)。如果有人能帮我的话 Login.html <!DOCTYPE html> <html> <head> <base target="_top"> <?!= include('LogIN-CSS') ?> <link href=

我试图用Gas和电子表格登录,我发现可以,但当密码和用户正确时,它会向我显示警报(是),但当usr/pass正确时,我需要重定向到另一个页面(Gas命名页面内)。如果有人能帮我的话

Login.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>

不久前发现了这块宝石。将给予造物主荣誉,但一直无法找到它…希望它有帮助!如果需要示例工作表,请单击

var conf='config'
var ss=电子表格应用程序.openById(ID)
函数doGet(e){
if(Object.keys(e.parameter).length==0){
var htmlFile
var sheetName=conf
var activeSheet=ss.getSheetByName(sheetName)
如果(活动表!==null){
var values=activeSheet.getDataRange().getValues();

对于(var i=0,iLen=values.length;感谢分享,我有一个问题。它可以工作,但当我登录时显示404,但如果我重新加载页面,它会将我发送到仪表板。你的脚本编辑器中有login.html文件和dashboard.html吗?是的,我只是复制你发布的电子表格,并检查它如何工作,但当用户和pass都被删除时,就会发生这种情况。)更正登录,但dasboard显示错误404。当我刷新它时,显示dash。那么,如果用户的Credentail是正确的,你基本上想将用户重定向到电子表格吗?不,如果Credentail是正确的,重定向到另一个用gas制作的html。你的
e.parameters.v
是什么?它支持什么,它加载了什么?这有意义吗要使if条件检查函数
checkAccountCredentials
返回什么?

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
}