Last active
May 12, 2021 16:24
-
-
Save neno-tech/a5b15066bd5a099b93fa8e2ffa3cf9fc to your computer and use it in GitHub Desktop.
Ep-2 Webapp Responsive ระบบป้องกันการส่งฟอร์มค่าว่าง และส่งงานแยกโฟลเดอร์ เครดิต อ.ดรัณภพ
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) { | |
var template = HtmlService.createTemplateFromFile('index') | |
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME) | |
.addMetaTag('viewport', 'width=device-width , initial-scale=1') | |
} | |
function uploadFiles(form) { | |
try { | |
var dropbox = "xxx" | |
var folder, folders = DriveApp.getFoldersByName(dropbox); | |
if (folders.hasNext()) { | |
folder = folders.next(); | |
} else { | |
folder = DriveApp.createFolder(dropbox); | |
} | |
var home = 'xxx' | |
var file = folder.createFile(form.myFile); | |
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT); | |
var url = file.getUrl() | |
var subject = form.mySubject | |
var name = form.myName | |
var classroom = form.myClass | |
var num = form.myNum | |
var ss = SpreadsheetApp.openById('xxx') | |
var sh = ss.getSheetByName('แผ่น1') | |
sh.appendRow([new Date(), name, classroom, num, subject,url]) | |
return "คุณ.." + name + " ชั้น " + classroom+ " ส่งงานเรียบร้อยแล้ว <p><p><a href ='"+url+"' >คลิกดูงานที่ส่ง</a> <p><a href ='"+home+"' >กลับหน้าหลัก</a>" | |
} catch (error) { | |
return error.toString(); | |
} | |
} |
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 lang="th"> | |
<head> | |
<base target="_top"> | |
<meta charset="UTF-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<script src="https://kit.fontawesome.com/ad42651166.js" crossorigin="anonymous"></script> | |
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> | |
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous"> | |
<link href='https://fonts.googleapis.com/css?family=Prompt' rel='stylesheet' type='text/css'> | |
<title>แบบฟอร์มส่งงานออนไลน์</title> | |
<style type='text/css'> | |
.prompt { | |
font-family: 'Prompt', sans-serif; | |
} | |
body { | |
font-family: 'Prompt' !important; | |
} | |
</style> | |
</head> | |
<body> | |
<nav class="navbar navbar-expand-lg navbar-dark bg-primary"> | |
<div class="container"> | |
<a class="navbar-brand" href="#"></a> | |
<h4 class="prompt text-white"><img src="https://drive.google.com/uc?id=1SQSVYCkY46_eqDIWDFvxfovotPAGnqMy" weight="90" height="90">แบบฟอร์มส่งงาน ห้องเรียนออนไลนครูอภิวัฒน์ วงศ์กัณหา </h4> | |
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor03" aria-controls="navbarColor03" aria-expanded="false" aria-label="Toggle navigation"> | |
<span class="navbar-toggler-icon"></span> | |
</button> | |
<div class="collapse navbar-collapse" id="navbarColor03"> | |
<ul class="navbar-nav mr-auto w-100 justify-content-end"> | |
<li class="nav-item"> | |
<a class="nav-link" href="https://www.apivat.com/" target="_blank"><i class="fas fa-home mr-2"></i> เว็บไซต์ออนไลน์ครูอภิวัฒน์</a> | |
</li> | |
</ul> | |
</div> | |
</div> | |
</nav> | |
<section> | |
<br> | |
<div class="container"> | |
<div class="card text-black mb-12" style="max-width: 100rem; background-color: #ffed00"> | |
<h2 class="card-header prompt">ขั้นตอนการส่งงานออนไลน์</h2> | |
<div class="card-body"> | |
<p class="card-text mali"> | |
<ul> | |
<li>เลือกรายวิชาที่เรียนให้ตรงกับที่นักเรียนกำลังศึกษาอยู่ในปัจจุบัน</li> | |
<li>กรอกชื่อ-นามสกุลนักเรียนให้สมบูรณ์ เช่น นายสมชาย เรียนดี</li> | |
<li>พิมพ์ระดับชั้นและห้องเรียนให้เรียบร้อย เช่น ม.4/3</li> | |
<li>เลือกไฟล์ที่นักเรียนจะอัพโหลดส่งงาน ควรลดขนาดภาพ กรณีที่ไฟล์มีขนาดใหญ่</li> | |
</ul> | |
</div> | |
</div> | |
</div> | |
</section> | |
<br> | |
<!-- กรอกข้อมูล --> | |
<div class="container"> | |
<form id="myForm" class="needs-validation" novalidate> | |
<div class="row"> | |
<div class="col-md-6"> | |
<label class="form-label">เลือกรายวิชาที่เรียน</label> | |
<select name="mySubject" class="form-select" required> | |
<option value="" disabled selected>เลือก..</option> | |
<option value="เทคโนโลยี">เทคโนโลยี</option> | |
<option value="การสร้างเกม">การสร้างเกม</option> | |
<option value="การ์ตูนเอนิเมชั่น">การ์ตูนเอนิเมชั่น</option> | |
<option value="การตัดต่อภาพยนตร์">การตัดต่อภาพยนตร์</option> | |
</select> | |
<div class="invalid-feedback"> | |
กรุณาเลือก รายวิชา | |
</div> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col-md-3 mt-2"> | |
<label for="myName" class="form-label">ชื่อ-สกุล</label> | |
<input type="text" class="form-control" name="myName" id="myName" required> | |
<div class="invalid-feedback"> | |
กรุณาใส่ ชื่อสกุล | |
</div> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col-6 col-md-2 mt-2"> | |
<label for="myClass" class="form-label">ระดับชั้น</label> | |
<input type="text" class="form-control" name="myClass" id="myClass" required> | |
<div class="invalid-feedback"> | |
กรุณาใส่ ระดับชั้น | |
</div> | |
</div> | |
<div class="col-6 col-md-1 mt-2"> | |
<label for="myNum" class="form-label">เลขที่</label> | |
<input type="text" class="form-control" name="myNum" id="myNum" required> | |
<div class="invalid-feedback"> | |
กรุณาใส่ เลขที่ | |
</div> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col-md-4 mt-2"> | |
<label class="form-label">เลือกไฟล์ส่งงาน</label> | |
<input type="file" name="myFile" class="form-control" required> | |
<div class="invalid-feedback"> | |
กรุณาอัพโหลดไฟล์งาน | |
</div> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col-md-4 mt-4"> | |
<button type="submit" class="btn btn-success btn-lg" id="btn">คลิกส่งงาน</button> | |
</div> | |
</div> | |
</form> | |
<div id="output"></div> | |
<!-- Footer --> | |
<footer><br> | |
<div class="bg-primary"> | |
<div class="container"> | |
<br> | |
<div class="row"> | |
<div class="clo-lg-3 col-md-6"> | |
<h4 class="prompt text-white"><i class="fa fa-user-circle-o mr-3"></i> นายอภิวัฒน์ วงศ์กัณหา | |
</h4> | |
<h5 class="prompt text-white">โรงเรียนหกสิบพรรษาวิทยาคม อุบลราชธานี | |
</h5> | |
<h6 class="prompt text-white">สำนักงานเขตพื้นที่การศึกษามัธยมศึกษาอุบลราชธานี เขต 29</h6> | |
</div> | |
</div> | |
</div> | |
</div> | |
</footer> | |
<!-- ปิดแทก Footer --> | |
</div> | |
</body> | |
</html> | |
<script> | |
(function () { | |
'use strict' | |
// Fetch all the forms we want to apply custom Bootstrap validation styles to | |
var forms = document.querySelectorAll('.needs-validation') | |
// Loop over them and prevent submission | |
Array.prototype.slice.call(forms) | |
.forEach(function (form) { | |
form.addEventListener('submit', function (event) { | |
if (!form.checkValidity()) { | |
event.preventDefault() | |
event.stopPropagation() | |
}else{ | |
formSubmit() | |
} | |
form.classList.add('was-validated') | |
}, false) | |
}) | |
})() | |
let form = document.getElementById('myForm') | |
function formSubmit() { | |
event.preventDefault(); | |
document.getElementById('btn').innerHTML = 'กำลังอัพโหลดไฟล์...'; | |
google.script.run.withSuccessHandler(fileUploaded).uploadFiles(form); | |
} | |
function fileUploaded(status) { | |
document.getElementById('myForm').style.display = 'none'; | |
document.getElementById('output').innerHTML = status; | |
Swal.fire({ | |
position: 'center', | |
icon: 'success', | |
title: 'อัพโหลดไฟล์เรียบร้อยแล้ว', | |
showConfirmButton: false, | |
timer: 2000 | |
}) | |
} | |
</script> | |
<script src="//cdn.jsdelivr.net/npm/sweetalert2@10"></script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment