K館簽到
index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<style>
h1 {
color: #ff5500;
font-size: 72px;
}
h2 {
color: #0000ff;
font-size: 60px;
}
input {
color: #0000ff;
font-size: 60px;
}
label {
color: #0000ff;
font-size: 60px;
}
</style>
<script>
//Global variable
var loadDate; //網頁載入日期
window.onload = function(){
var dt = new Date();
var year = dt.getFullYear();
var month = dt.getMonth()+1;
var day = dt.getDate();
loadDate = year+"/"+month+"/"+day;
var inputElement = document.getElementById("studentId");
if (inputElement) {
inputElement.focus(); //游標移至input
}
}
function checkCode(){
document.getElementById("result").textContent = "";
var code = document.getElementById("studentId").value;
if (code.length === 10){
document.getElementById("result").style.color = "Silver";
document.getElementById("result").textContent = "卡號配對中...";
var dt = new Date();
var year = dt.getFullYear();
var month = dt.getMonth()+1;
var day = dt.getDate();
var ymd = year+"/"+month+"/"+day;
if (ymd !== loadDate ){
document.getElementById("result").style.color = "Brown";
}
google.script.run.withSuccessHandler(function(result){
if (result.indexOf('簽到')>0){
document.getElementById("result").style.color = "Green";
} else {
if(result.indexOf('無配對')>0){
document.getElementById("result").style.color = "#ff5500";
}else{
document.getElementById("result").style.color = "Red";
}
}
document.getElementById("result").textContent = result;
document.getElementById("studentId").value = "";
}).searchStudent(code);
}
}
</script>
</head>
<body>
<div align="center">
<h1>岡山高中圖書館K書中心👀簽到、退系統</h1>
<!-- <h2 id="date"></h2> 已被移除或註解掉 -->
<label for="id">請感應:</label>
<input type="text" id="studentId" maxlength="10" oninput="checkCode()" placeholder="卡號"><br>
<br><br><br> <!-- 新增一個空白行 -->
<label id="result"></label><br>
Power By Google Apps Script. <u>Allen Chang</u>
</div>
</body>
</html>
GAS
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheetId = spreadsheet.getId();
var studentSheet = "Student"; //學生基本資料表
var signInOut = "簽到退"; //簽到退紀錄工作表
var yyyymmdd = "";
function doGet() {
return HtmlService.createHtmlOutputFromFile("index");
}
//搜尋學號
function searchStudent(studentid){
studentid = String(studentid).padStart(10, '0');
if (isNaN(studentid)){
studentid = "'"+studentid;
}
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName("Card");
var values = sheet.getDataRange().getValues();
//尋找卡號 frmo Card
for (var i=1;i<values.length;i++){
var rowData = values[i];
if ( studentid === rowData[1] ){ //找到卡號
//組合學生Email,發通知信
var stuID = String(rowData[0]).padStart(6, '0');
var studentEmail = "stu" + stuID + "@kssh.khc.edu.tw";
//var myTest = "allenctc168@gmail.com";
//計算簽到日期、時間
var dt = new Date();
var year = dt.getFullYear();
var month = dt.getMonth()+1;
var day = dt.getDate();
var hh = dt.getHours();
var mm = dt.getMinutes();
var ss = dt.getSeconds();
yyyymmdd = year+"/"+month+"/"+day+" "+hh+":"+mm+":"+ss;
//讀取、紀錄簽到記錄 from Student
var sheet1 = SpreadsheetApp.openById(sheetId).getSheetByName("Student");
var values1 = sheet1.getDataRange().getValues();
for (var i=1;i<values.length;i++){
rwdata = values1[i];
if( stuID === rwdata[4] ){
var count = sheet1.getRange(i+1,7).getValue(); //Student欄7
sheet1.getRange(i+1,7).setValue(count+1); //紀錄簽到退一次
var obj = {
id: stuID,
name: rowData[3],
email: studentEmail,
status: '',
datetime: yyyymmdd
}
//
if( count%2===0 ){
obj.status = "<Font Color='Blue' Size='12px'>簽到</Font>";
writeSignIn(stuID);
return rwdata[3]+" 簽到成功。"+yyyymmdd;
} else {
obj.status = "<Font Color='Red' Size='12px'>簽退</Font>";
writeSignOut(stuID);
return rwdata[3]+" 簽退完成。"+yyyymmdd;
}
}
}
return studentid+" 無配對學號!!";
}
}
return studentid+" 無配對學號!!";
}
function writeSignIn(id){
id = "'"+id;
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(signInOut);
var date = new Date();
var searchKey = "'" + date.getFullYear() + (date.getMonth()+1) + date.getDate();
sheet.appendRow([yyyymmdd,id,"簽到",searchKey]);
}
function writeSignOut(id){
id = "'"+id;
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(signInOut);
var date = new Date();
var searchKey = "'" + date.getFullYear() + (date.getMonth()+1) + date.getDate();
sheet.appendRow([yyyymmdd,id,"簽退",searchKey]);
}
function sendEmail(obj){
var recipientEmail = obj.email;
var name = obj.name;
var content = name + ',你已於 '+obj.datetime+obj.status+"<br><br>";
content = content + "國立岡山高級中學 圖書館<br>(這是系統自動寄發,請勿回覆)";
try {
MailApp.sendEmail({
to: recipientEmail,
subject: '岡山高中K書中心簽到退通知',
htmlBody: content,
});
return 1;
}
catch (error) {
return '郵件寄送失敗:' + error.message;
}
}