Last active
July 25, 2021 05:24
-
-
Save neno-tech/54534127ae12620a116b35a1f876f2a1 to your computer and use it in GitHub Desktop.
โค้ดการทำระบบเข้าสอบออนไลน์
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function doGet(e) { | |
return HtmlService.createTemplateFromFile("Index").evaluate() | |
.setTitle("WebApp: Search By Password") | |
.addMetaTag('viewport', 'width=device-width, initial-scale=1') | |
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); | |
} | |
/* PROCESS FORM */ | |
function processForm(formObject){ | |
var concat = formObject.searchtext+formObject.searchtext2; | |
var result = ""; | |
if(concat){//Execute if form passes search text | |
result = search(concat); | |
} | |
return result; | |
} | |
//SEARCH FOR MATCHED CONTENTS ; | |
function search(searchtext){ | |
var spreadsheetId = 'xxx'; //** CHANGE !!!! | |
var sheetName = "xxx" //** CHANGE !!!! | |
var range = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName).getDataRange(); | |
var data = range.getValues(); | |
var ar = []; | |
data.forEach(function(f) { | |
if (~[f[3]].indexOf(searchtext)) { | |
ar.push([ f[2] ]); | |
} | |
}); | |
return ar; | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<base target="_self"> | |
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> | |
<style> | |
/* h5 {background: red;} */ | |
</style> | |
</head> | |
<body> | |
<div class="container"> | |
<br> | |
<div class="row"> | |
<div class="col"> | |
<!-- ## SEARCH FORM ------------------------------------------------ --> | |
<center><form id="search-form" onsubmit="handleFormSubmit(this)"> | |
<div class="form-group mb-2"> | |
<h5 for="searchtext">กรุณากรอกรหัสสำหรับเข้าสอบ</h5> | |
</div><p> | |
<div class="form-group mx-sm-3 mb-3"> | |
<input type="text" class="form-control col-sm-6" id="searchtext" name="searchtext" placeholder="User ID"><br> | |
<input type="password" class="form-control col-sm-6" id="searchtext2" name="searchtext2" placeholder="Password"> | |
</div><p> | |
<button type="submit" class="btn btn-success mb-2">คลิกเข้าสอบ</button> | |
<span id="resp-spinner5" class="spinner-grow spinner-grow-sm text-danger d-none" role="status" aria-hidden="true"></span> | |
<span id="resp-spinner6" class="spinner-grow spinner-grow-sm text-warning d-none" role="status" aria-hidden="true"></span> | |
<span id="resp-spinner7" class="spinner-grow spinner-grow-sm text-info d-none" role="status" aria-hidden="true"></span> | |
</form></center> | |
<!-- ## SEARCH FORM ~ END ------------------------------------------- --> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col"> | |
<!-- ## TABLE OF SEARCH RESULTS ------------------------------------------------ --> | |
<div id="search-results" class="table-responsive"> | |
<!-- The Data Table is inserted here by JavaScript --> | |
</div> | |
<!-- ## TABLE OF SEARCH RESULTS ~ END ------------------------------------------------ --> | |
</div> | |
</div> | |
</div> | |
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> | |
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> | |
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script> | |
<!--##JAVASCRIPT FUNCTIONS ---------------------------------------------------- --> | |
<script> | |
//PREVENT FORMS FROM SUBMITTING / PREVENT DEFAULT BEHAVIOUR | |
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, true); | |
//HANDLE FORM SUBMISSION | |
function handleFormSubmit(formObject) { | |
if(document.getElementById('searchtext').value == "" || document.getElementById('searchtext2').value == ""){ | |
alert("Fill in Name and Password"); | |
}else{ | |
document.getElementById('resp-spinner5').classList.remove("d-none"); | |
document.getElementById('resp-spinner6').classList.remove("d-none"); | |
document.getElementById('resp-spinner7').classList.remove("d-none"); | |
google.script.run.withSuccessHandler(createTable).processForm(formObject); | |
document.getElementById("search-form").reset(); | |
}; | |
}; | |
//CREATE THE DATA TABLE | |
function createTable(dataArray) { | |
document.getElementById('resp-spinner5').classList.add("d-none"); | |
document.getElementById('resp-spinner6').classList.add("d-none"); | |
document.getElementById('resp-spinner7').classList.add("d-none"); | |
if(dataArray && dataArray !== undefined && dataArray.length != 0){ | |
var result = "<table class='table table-sm table-striped' id='dtable' style='font-size:0.8em'>"+ | |
"<thead style='white-space: nowrap'>"+ | |
"<tr>"+ //Change table headings to match with the Google Sheet | |
"</tr>"+ | |
"</thead>"; | |
for(var i=0; i<dataArray.length; i++) { | |
result += "<tr>"; | |
for(var j=0; j<dataArray[i].length; j++){ | |
result += "<td>"+dataArray[i][j]+"</td>"; | |
} | |
result += "</tr>"; | |
} | |
result += "</table>"; | |
var div = document.getElementById('search-results'); | |
div.innerHTML = result; | |
}else{ | |
var div = document.getElementById('search-results'); | |
//div.empty() | |
div.innerHTML = "Data not found!"; | |
} | |
} | |
</script> | |
<!--##JAVASCRIPT FUNCTIONS ~ END ---------------------------------------------------- --> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
very good