โจทย์
ทำ Google Sheet ให้สามารถกรอกข้อมูลและเพิ่มเป็น record ต่าง ๆ และสามารถ Update ได้
ตัวแปรที่ต้องระวังคือ
– การพิมพ์ ตัวชื่ออักษรของ sheet ต่าง ๆเรื่องตัวเล็กตัวใหญ่
– ตัวเลข 13 คือตัวเลขจำนวน column ที่มีทั้งหมดใน sheet Data ครับ
// ประกาศตัวแปร sheet ต่าง ๆ
const ss = SpreadsheetApp.getActiveSpreadsheet()
const formWS = ss.getSheetByName("form")
const settingsWS = ss.getSheetByName("Settings")
const dataWS = ss.getSheetByName("Data")
const idCell = formWS.getRange("C2")
const fieldRange = ["C5","C6","C8","C11","C12","C13","C14","C16","C17","C19"]
const searchCell = formWS.getRange("C3")
function saveRecord() {
const id = idCell.getValue()
if(id == ""){
creatNewRecord()
return
}
const cellFound = dataWS.getRange("A:A")
.createTextFinder(id)
.matchCase(true)
.matchEntireCell(true)
.findNext()
if(!cellFound) return
const row = cellFound.getRow()
const fieldValues = fieldRange.map(f => formWS.getRange(f).getValue())
fieldValues.unshift(id)
dataWS.getRange(row,1,1,13).setValues([fieldValues])
searchCell.clearContent()
ss.toast("change save","id:"+ id)
}
function creatNewRecord(){
const fieldValues = fieldRange.map(f => formWS.getRange(f).getValue())
const nextIDCell = settingsWS.getRange("A2")
const nextID = nextIDCell.getValue()
fieldValues.unshift(nextID)
// console.log(fieldValues)
dataWS.appendRow(fieldValues)
idCell.setValue(nextID)
nextIDCell.setValue(nextID+1)
searchCell.clearContent()
ss.toast("New Record Created","id:"+ nextID)
}
function newRecord(){
fieldRange.forEach(f => formWS.getRange(f).clearContent())
idCell.clearContent()
searchCell.clearContent()
}
function search(){
const searchValue = searchCell.getValue()
const data = dataWS.getRange("A2:L").getValues()
const recordsFound = data.filter (r => r[13]== searchValue)
if(recordsFound.length ===0) return
idCell.setValue(recordsFound[0][0])
fieldRange.forEach((f,i) => formWS.getRange(f).setValue(recordsFound[0][i+1]))
}
function deletRecord(){
const id = idCell.getValue()
if(id == "")return
const cellFound = dataWS.getRange("A:A")
.createTextFinder(id)
.matchCase(true)
.matchEntireCell(true)
.findNext()
if(!cellFound) return
const row = cellFound.getRow()
dataWS.deleteRow(row)
newRecord()
ss.toast("delet sucess","id:"+ id)
}
function clearData() {
fieldRange.forEach(f => formWS.getRange(f).clearContent())
idCell.clearContent()
searchCell.clearContent()
}
หน้าตาของ form
