一、路由
doGet(e)
Route.path("form", form);
二、程式
program.gs
function form(e) { var formData = {}; formData.webTitle = SCRIPT_PROP.getProperty("webTitle");//網站標題 formData.link = ScriptApp.getService().getUrl() ; formData.adminEmail = SCRIPT_PROP.getProperty("adminEmail");//管理員email formData.userEmail = Session.getActiveUser().getEmail();//訪客email,只能抓到擁有者 return render("form",{formData:formData}); }
三、樣板
form.html
<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> <title><? formData.webTitle ?></title> </head> <body> <div class="container mt-3"> <div id="search" class="d-none"> <span>資料搜尋中....<img src="https://i.imgur.com/pm9SKUg.gif"></span> </div> <div id="main"> <h1 class="text-center mb-3"><?= formData.webTitle; ?></h1> <form action="" id="myForm" class=""> <div class="row"> <div class="col-sm-12"> <div class="form-group"> <label>密碼<span class="text-danger">*</span></label> <input type="password" class="form-control" name="pass" id="pass" value=""> </div> </div> <!--送出--> <div class="col-sm-12"> <button id="submit" type="submit" class="btn btn-primary btn-block">送出</button> </div> </div> </form> </div> </div> <!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script> <style> .error{ color:red; } </style> <script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.min.js"></script> <!-- 調用函式 --> <script> $(function(){ $("#myForm").validate({ submitHandler: function(form) { insertDate(); }, rules: { 'pass': { required: true } }, messages: { 'pass': { required: '必填'} } }); }); function insertDate(){ var formData = {}; formData.pass = document.getElementById("pass").value; //樣板執行 函式 apps script function google.script.run.withSuccessHandler(onSuccess).formDataInsert(formData); document.getElementById('search').setAttribute("class", ""); document.getElementById('main').setAttribute("class", "d-none"); } function onSuccess(html) { var div = document.getElementById('search'); div.innerHTML = html; } </script> </body> </html>
四、程式
program.gs
/*============================================== 從form.html 樣板而來 回傳html 至 樣板 ==============================================*/ function formDataInsert(formData){ //取得檔案 var ss = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("id")); var ws = ss.getSheetByName("成績表"); var mainTitle = ws.getRange(1, 1, 1, ws.getLastColumn()).getValues()[0];//取得成績表中文欄名 //判斷密碼是否正確 if(formData.pass != SCRIPT_PROP.getProperty("pass")){ var mains = []; // }else{ var mains = ws.getSheetValues(2,1,ws.getLastRow()-1,ws.getLastColumn()); // } formData.webTitle = SCRIPT_PROP.getProperty("webTitle");//網站標題 formData.link = ScriptApp.getService().getUrl() ; //顯示查詢結果 var all_search = HtmlService.createTemplateFromFile("all_search"); all_search.mainTitle = mainTitle; all_search.mains = mains; all_search.formData = formData; var html = all_search.evaluate().getContent();//組合樣板與變數 return html; }
五、樣板
all_search.html
<? if(mains.length == 0){ ?> <div class="row"> <div class="col-sm-12"> <h4 class="mt-3 mb-3 text-center">密碼不符</h4> <a href="<?= formData.link + "?op=form" ?>" target="_blank" class="btn btn-primary btn-block">繼續查詢</a> </div> </div> <? }else {?> <div class="row mb-5"> <div class="col-sm-12"> <h4 class="mt-3 mb-3 text-center"><?= formData.webTitle; ?></h4> </div> <div class="col-sm-12"> <div id="" class="table-responsive mt-3"> <table class="table table-striped table-bordered table-hover"> <thead> <tr> <? for(i in mainTitle){ ?> <?if(mainTitle[i] != "認證碼"){ ?> <th class="text-center"><?= mainTitle[i] ?></th> <? } ?> <? } ?> </tr> </thead> <tbody id=""> <? for(i in mains){ ?> <tr> <? for(j in mainTitle){ ?> <?if(mainTitle[j] != "認證碼"){ ?> <td class="text-center"><?= mains[i][j] ?></td> <? } ?> <? } ?> </tr> <? } ?> </tbody> </table> </div> <a href="<?= formData.link + "?op=form" ?>" target="_blank" class="btn btn-primary btn-block">繼續查詢</a> </div> </div> <? } ?>