Hello everyone!
Hari ini saya ingin berbagi ilmu tentang bagaimana kita bisa membuat sebuah sistem sederhana untuk membuat pendaftaran online yang langsung mendapatkan nomor antrian menggunakan integrasi Google Forms dan Google Sheets. Simak, yuk!
Dukung EstehC.
Step by step-nya!
- Membuat formulir di Google Forms
- Connect respons ke Spreadsheet
- Create Spreadsheet baru
- Beri nama yang sama dengan nama di Google Forms
- Di Spreadsheet, pilih menu Extension > Apps Script
- Masuk ke Code.gs dan copy paste code JavaScript di bawah
- Pilih tombol “Triggers” atau pemicu
- Buat pemicu dengan jenis acara “Saat mengirim formulir”
- Pada Google Forms, pilih setelan > konfirmasi pesan
- Tuliskan PREFIX yang ada di Code.gs
- Selesai, Guys…
Code.gs (JavaScript)
const UID = {
HEADER: "Nomor_Pendaftaran",
PREFIX: "No. Pendaftaran : ",
LENGTH: 3,
}
class App{
constructor(){
this.ss = SpreadsheetApp.getActivate()
this.sheet = this.getLinkedSheet()
if (!this.sheet) {
throw Error('There is no linked form in this spreadsheet.')
}
this.form = FormApp.openByUrl(this.sheet.getFormUrl())
this.message = this.form.getConfirmationMessage()
this.uidRegex = new RegExp('${UID.PREFIX}[\\d]{${UID.LENGTH}}', 'gi')
}
createUidByNumber(number){
return UID.PREFIX + (10 ** UID.LENGTH + number).toString().slice(-UID.LENGTH)
}
getLinkedSheet(){
return this.ss.getSheets().find(sheet => sheet.getFormUrl())
}
getUidFormConfirmationMessage(){
const message = this.form.getConfirmationMessage()
const results = message.match(this.uidRegex)
if (!results) throw Error('No UID found in the current confirmation message with regex ${this.uidRegex}.')
return results[0]
}
createNextUid(currentUid){
const nextUidNumber = Number(currentUid.replace(UID.PREFIX, "")) +1
return this.createUidByNumber(nextUidNumber)
}
saveCurrentUid(uid, rowStart){
const [headers] =this.sheet.getDataRange().getDisplayValues()
let uidHeaderIndex = headers.indexOf(UID.HEADER)
if (uidHeaderIndex == -1){
uidHeaderIndex = headers.length
this.sheet.getRange(1, uidHeaderIndex + 1).setValue(UID.HEADER)
}
this.sheet.getRange(rowStart, uidHeaderIndex + 1).setValue(uid)
}
updateConfirmationMessage(nextUid){
const message = this.message.replace(this.uidRegex, nextUid)
this.form.setConfirmationMessage(message)
}
run(e){
const {rowStart} = e.range
const currentUid = this.getUidFormConfirmationMessage()
this.saveCurrentUid(currentUid, rowStart)
const nextUid = this.createNextUid(currentUid)
this.updateConfirmationMessage(nextUid)
}
}
function _onFormSubmit(e){
new App().run(e)
}
PENJESALAN UID:
- HEADER: Membuat tabel otomatis di Sheets untuk no. pendaftaran
- PREFIX: Copy-paste di After Submission di Google Forms.
- LENGTH: Jumlah angka yang akan muncul pada Google Forms.