Created
February 16, 2021 23:48
-
-
Save neno-tech/dac534dd278e7d9f6b58ac897299a734 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
var SHEET_NAME = "xxx";//ชื่อชีต | |
var SCRIPT_PROP = PropertiesService.getScriptProperties(); | |
function doGet(e) { | |
return HtmlService.createHtmlOutputFromFile('forms.html').setTitle("Registration With Document"); | |
} | |
function uploadFileToGoogleDrive(data, file, name, pid, email, tel) { | |
try { | |
var dropbox = "Received Files"; | |
var folder = DriveApp.getFolderById('xxx');//ไอดีโฟลเดอร์ | |
var contentType = data.substring(5, data.indexOf(';')), | |
bytes = Utilities.base64Decode(data.substr(data.indexOf('base64,') + 7)), | |
blob = Utilities.newBlob(bytes, contentType, file), | |
file = folder.createFolder([name, email].join(" ")).createFile(blob), | |
filelink = file.getUrl(); | |
var lock = LockService.getPublicLock(); | |
lock.waitLock(30000); | |
var doc = SpreadsheetApp.openById("xxx");//ไอดีสเปรดชีต | |
var sheet = doc.getSheetByName(SHEET_NAME); | |
var headRow = 1; | |
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; | |
var nextRow = sheet.getLastRow() + 1; | |
var row = []; | |
for (i in headers) { | |
if (headers[i] == "วันที่") { | |
row.push(new Date()); | |
} else if (headers[i] == "ชื่อ สกุล") { | |
row.push(name); | |
} else if (headers[i] == "ตำแหน่ง") { | |
row.push(pid); | |
} else if (headers[i] == "อีเมล") { | |
row.push(email); | |
} else if (headers[i] == "เบอร์โทร") { | |
row.push(tel); | |
} else if (headers[i] == "ลิ้งค์ไฟล์") { | |
row.push(filelink); | |
} | |
} | |
sheet.getRange(nextRow, 1, 1, row.length).setValues([row]); | |
return "OK"; | |
} catch (f) { | |
return f.toString(); | |
} finally { | |
lock.releaseLock(); | |
} | |
} | |
function setup() { | |
var doc = SpreadsheetApp.getActiveSpreadsheet(); | |
SCRIPT_PROP.setProperty("xxx", doc.getId());//ไอดีสเปรดชีต | |
} |
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="_blank"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>การสร้างฟอร์มลงทะเบียนด้วยสคริปต์</title> | |
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/css/materialize.min.css"> | |
<style> | |
.disclaimer{width: 480px; color:#646464;margin:20px auto;padding:0 16px;text-align:center;font:400 12px Roboto,Helvetica,Arial,sans-serif}.disclaimer a{color:#009688}#credit{display:none} | |
</style> | |
</head> | |
<body> | |
<form class="main" id="form" novalidate="novalidate" style="max-width: 480px;margin: 40px auto;"> | |
<div id="forminner"> | |
<div class="row"> | |
<div class="col s12"> | |
<h5 class="center-align teal-text">ฟอร์มลงทะเบียนอบรม</h5> | |
<p class="disclaimer">กรอกข้อมูลให้ครบสมบูรณ์ทุกช่อง.</p> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="input-field col s12"> | |
<input id="name" type="text" name="Name" class="validate" required="" aria-required="true"> | |
<label for="name">ชื่อ สกุล</label> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="input-field col s12"> | |
<input id="pid" type="text" name="Pid" class="validate" required="" aria-required="true"> | |
<label for="pid">ตำแหน่ง</label> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="input-field col s12"> | |
<input id="email" type="email" name="Email" class="validate" required="" aria-required="true"> | |
<label for="email">อีเมล</label> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="input-field col s12"> | |
<input id="tel" type="tel" name="Tel" class="validate" required="" aria-required="true"> | |
<label for="tel">เบอร์โทร</label> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="file-field input-field col s12"> | |
<div class="btn"> | |
<span>ไฟล์</span> | |
<input id="files" type="file"> | |
</div> | |
<div class="file-path-wrapper"> | |
<input class="file-path validate" type="text" placeholder="เลือกไฟล์ที่จะทำการอัปโหลด"> | |
</div> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="input-field col s6"> | |
<button class="waves-effect waves-light btn submit-btn" type="submit" onclick="submitForm(); return false;">บันทึกข้อมูล</button> | |
</div> | |
</div> | |
<div class="row"> | |
<div class="input-field col s12" id = "progress"> | |
</div> | |
</div> | |
</div> | |
<div id="success" style="display:none"> | |
<h5 class="left-align teal-text">การลงทะเบียน</h5> | |
<p>เสร็จเรียบร้อยแล้ว.</p> | |
<p class="center-align"><a class="btn btn-large" onclick="restartForm()" >เข้าลงทะเบียนใหม่</a></p> | |
</div> | |
</form> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/js/materialize.min.js"></script> | |
<script> | |
var file, reader = new FileReader(); | |
reader.onloadend = function(e) { | |
if (e.target.error != null) { | |
showError("File " + file.name + " could not be read."); | |
return; | |
} else { | |
google.script.run | |
.withSuccessHandler(showSuccess) | |
.uploadFileToGoogleDrive(e.target.result, file.name, $('input#name').val(), | |
$('input#pid').val(), $('input#email').val(), $('input#tel').val()); | |
} | |
}; | |
function showSuccess(e) { | |
if (e === "OK") { | |
$('#forminner').hide(); | |
$('#success').show(); | |
} else { | |
showError(e); | |
} | |
} | |
function restartForm() { | |
$('#form').trigger("reset"); | |
$('#forminner').show(); | |
$('#success').hide(); | |
$('#progress').html(""); | |
} | |
function submitForm() { | |
var files = $('#files')[0].files; | |
if (files.length === 0) { | |
showError("เลือกไฟล์ที่จะอัปโหลด"); | |
return; | |
} | |
file = files[0]; | |
if (file.size > 1024 * 1024 * 5) { | |
showError("The file size should be < 5 MB. "); | |
return; | |
} | |
showMessage("กำลังอัปโหลดข้อมูล.."); | |
reader.readAsDataURL(file); | |
} | |
function showError(e) { | |
$('#progress').addClass('red-text').html(e); | |
} | |
function showMessage(e) { | |
$('#progress').removeClass('red-text').html(e); | |
} | |
$(document).ready(function() { | |
$('select').material_select(); | |
}); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment