#JP31 Membuat Nomer Pendaftaran Otomatis Google Form

Membuat Nomer Pendaftaran Otomatis Google Form


*Untuk Mendapatkan Full Script tanpa password silahkan Klik Disini*

1. Buatlah Goole Form


2. Buat Spreadsheet Respons dengan cara klik menu Jawaban/Responses - klik ikon Spreadsheet.


3. Akan muncul Popup dan klik tombol Buat.


4. Setelah Spreadsheet Respon muncul. Buatlah lembar kerja Apps Script dengan cara klik menu Ekstensi/Extensions - lalu pilih Apps Script.


5. Pada lembar kerja Apps Script terdapat file default yaitu Code.gs.


6. Copy dan pastekan script di bawah ini ke Code.gs

Masukkan Password Untuk Melihat Script (Password ada di dalam video)

const UID = {
  HEADER: "Nomor_Pendaftaran",
  PREFIX: "No Pendaftaran : ",
  LENGTH: 3,
}

class App{
  constructor(){
    this.ss = SpreadsheetApp.getActive()
    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())
  }


  getUidFromConfirmationMessage(){
    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.getUidFromConfirmationMessage()
    this.saveCurrentUid(currentUid, rowStart)
    const nextUid = this.createNextUid(currentUid)
    this.updateConfirmationMessage(nextUid)
  }
}

function _onFormSubmit(e) {
  new App().run(e)
}



Penjelasan :
  • Line 2 (HEADER) : Pada Spreadsheet Respons akan otomatis bertambah 1 tabel paling akhir yaitu "Nomor Pendaftaran". 
  • Line 3 (PREFIX) : Teks tersebut silahkan copy dan pastekan pada Konfirmasi Pesan/After Submission google form.
  • Line 4 (LENGTH) : Jumlah angka yang akan muncul pada google form.
7. Pada lembar kerja Apps Script klik menu Pemicu/Triggers.


8. Klik tombol Tambahkan Pemicu/Add Triger pada sebelah kanan pojok bawah.


9. Setelah muncul popup, ganti pada Pilih Jenis Acara/Select Event Type menjadi "Saat Mengirim Formulir/On Form Submit" lalu klik Simpan.


10. Kembali pada Google Form.
Klik menu Setelan - gulir ke bawah klik Presentasi dan edit Konfirmasi Pesan.


11. Isikan kalimat yang sama dengan PREFIX (Lihat pada langkah nomor 6 di atas).
Pada nomor wajib di mulai dengan angka "1".
Untuk jumlah angka sesuaikan dengan LENGTH (Lihat pada langkah nomor 6 di atas).
Lalu klik Simpan.


12. Silahkan isikan Google Form.
Ini contoh hasilnya :



Pada Spreadsheet Respon otomatis ada tabel baru nama HEADER(Lihat pada langkah nomor 6 di atas)


SELESAI !!


Previous Post Next Post

Promo