
這篇文章分享搜尋引撆程式。
code.gs
// 連結HTML檔案
function doGet(){
var html=HtmlService.createTemplateFromFile("index");
var check=html.evaluate();
var show =check.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
return show;
}
/* PROCESS FORM */
function processForm(formObject){
var result = "";
if(formObject.searchtext){//Execute if form passes search text
result = search(formObject.searchtext);
}
return result;
}
// 搜尋
function search(searchtext) {
var spreadsheetId = '1lAqDSRoTvZ1WGW6-zGf9xP9AwrbRA7Bwh9FISagjKVg';
// var dataRage = 'Sheet1!A2:Y';
// var data = Sheets.Spreadsheets.Values.get(spreadsheetId, dataRage).values;
var dataRage = 'Sheet1!A2:E';
var data = Sheets.Spreadsheets.Values.get(spreadsheetId, dataRage).values;
var ar = [];
data.forEach(function(f) {
if (~f.indexOf(searchtext)) {
ar.push(f);
}
});
return ar;
}
index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o" 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) {
google.script.run.withSuccessHandler(createTable).processForm(formObject);
google.script.run.withSuccessHandler(showData).processForm(formObject);
google.script.run.withSuccessHandler(showLname).processForm(formObject);
google.script.run.withSuccessHandler(createProfile).processForm(formObject);
document.getElementById("search-form").reset();
}
//CREATE THE DATA TABLE
function createTable(dataArray) {
if(dataArray && dataArray !== undefined && dataArray.length != 0){
var result = "<table class='table table-sm table-striped' id='dtable' style='font-size:30px'>"+
"<thead style='white-space: nowrap'>"+
"<tr>"+ //Change table headings to match witht he Google Sheet
"<th scope='col'>ID</th>"+
"<th scope='col'>姓</th>"+
"<th scope='col'>名</th>"+
"<th scope='col'>Email</th>"+
"</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 = "沒有找到資料!";
}
}
//show特定 (姓氏)的資料
function showData(dataArray) {
if(dataArray && dataArray !== undefined && dataArray.length != 0){
var result = "";
for(var i=0; i<dataArray.length; i++) {
//只顯示姓(第二個欄位)
for(var j=1; j<2; j++){
result += "<p>"+dataArray[i][j]+"</p>";
}
}
var div = document.getElementById('specific');
div.innerHTML = result;
}else{
var div = document.getElementById('specific');
//div.empty()
div.innerHTML = "沒有找到資料!";
}
}
//show特定 (名)的資料
function showLname(dataArray) {
if(dataArray && dataArray !== undefined && dataArray.length != 0){
var result = "";
for(var i=0; i<dataArray.length; i++) {
for(var j=1; j<2; j++){
result += "<p>"+dataArray[i][j]+"</p>";
}
//只顯示姓(第二個欄位)
for(var j=2; j<3; j++){
result += "<p>"+dataArray[i][j]+"</p>";
}
for(var j=3; j<4; j++){
result += "<p>"+dataArray[i][j]+"</p>";
}
for(var j=4; j<5; j++){
result += "<img src="+dataArray[i][j]+">";
}
}
var div = document.getElementById('lname');
div.innerHTML = result;
}else{
var div = document.getElementById('lname');
//div.empty()
div.innerHTML = "沒有找到資料!";
}
}
</script>
<!-- Create a card -->
<!--##JAVASCRIPT FUNCTIONS ~ END ---------------------------------------------------- -->
<!--##JAVASCRIPT FUNCTIONS ~ END ---------------------------------------------------- -->
</head>
<body>
<div class="container">
<br>
<div class="row">
<div class="col">
<!-- ## SEARCH FORM ------------------------------------------------ -->
<form id="search-form" class="form-inline" onsubmit="handleFormSubmit(this)">
<div class="form-group mb-2">
<label for="searchtext">Search Text</label>
</div>
<div class="form-group mx-sm-3 mb-2">
<input type="text" class="form-control" id="searchtext" name="searchtext" placeholder="關鍵字">
</div>
<button type="submit" class="btn btn-primary mb-2">搜尋Search</button>
</form>
<!-- ## 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>
<!-- ## Specific SEARCH RESULTS ------------------------------------------------ -->
<div >
<p>姓:<span id="specific"></span>; 名:<span id="lname"></span></p>
<!-- The Data Table is inserted here by JavaScript -->
</div>
<!-- ## TABLE OF SEARCH RESULTS ~ END ------------------------------------------------ -->
</div>
<span id="profile"></span>
</div>
</div>
</body>
</html>
