Skip to content

Instantly share code, notes, and snippets.

@neno-tech
Last active September 19, 2022 02:05
Show Gist options
  • Save neno-tech/81815092cdc6cd81a2429d71c34637e0 to your computer and use it in GitHub Desktop.
Save neno-tech/81815092cdc6cd81a2429d71c34637e0 to your computer and use it in GitHub Desktop.
การบันทึกข้อมูลลงชีตด้วยไฟล์ HTML
var sheetName = 'xxx'
var scriptProp = PropertiesService.getScriptProperties()
function intialSetup () {
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
scriptProp.setProperty('key', activeSpreadsheet.getId())
}
function doPost (e) {
var lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
var sheet = doc.getSheetByName(sheetName)
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var nextRow = sheet.getLastRow() + 1
var newRow = headers.map(function(header) {
return header === 'timestamp' ? new Date() : e.parameter[header]
})
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}
<!DOCTYPE html>
<html>
<head>
<title>Form test</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" 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>
</head>
<body>
<div class="pt-4"></div>
<div class="container">
<div>
<h3 class="text-center">ฟอร์มบันทึกข้อมูลด้วย HTML</h3>
</div>
<form method="post" autocomplete="off" name="hello-sheet">
<div class="form-group">
<label for="name">ชื่อ สกุล</label>
<input type="text" class="form-control" placeholder="ชื่อ สกุล" name="ชื่อ-สกุล">
</div>
<div class="form-group">
<label for="name">ชื่อเล่น</label>
<input type="text" class="form-control" placeholder="ชื่อเล่น" name="ชื่อเล่น">
</div>
<div class="form-group">
<label for="name">เบอร์โทร</label>
<input type="text" class="form-control" placeholder="เบอร์โทร" name="เบอร์โทร">
</div>
<div class="form-group">
<label for="exampleInputEmail1">อีเมล</label>
<input type="email" name="อีเมล" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="อีเมล">
</div>
<button type="submit" name="submit" value="Send message" class="btn btn-primary">บันทึก</button>
</form>
</div>
<script>
const scriptURL = 'xxx'
const form = document.forms['hello-sheet']
form.addEventListener('submit', e => {
e.preventDefault()
fetch(scriptURL, { method: 'POST', body: new FormData(form)})
.then(response => alert("บันทึกข้อมูลเรียบร้อยแล้ว.."))
.catch(error => console.error('Error!', error.message))
})
</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment