Membuat Presensi Online Geolokasi Dengan Google Form

Membuat Presensi Online Geolokasi Dengan Google Form

Untuk yang ingin melakukan pencatatan presensi atau daftar hadir dengan biaya murah mungkin bisa dicoba alternatif berikut, yaitu penggunaan Google Form dan Google AppScript.

Untuk proses pembuatannya cukup mudah yaitu dengan menggunakan Gmail, kebetulan aku menggunakan Google Workspace.

Berikut langkah-langkahnya :

Buat terlebih dulu Google Form

Pilih titik 3 pada sudut kanan atas, pilih Script Editor

Kemudian akan muncul jendela Script Editor, pada file Code.gs, apabila ada kode bawaan, langsung dihapus saja semuanya

 

kemudian diganti dengan kode berikut :

function orgIP(ip) {
  var url = "http://ipinfo.io/"+ ip +"?token=12f70b0a35a87f";
  var response = UrlFetchApp.fetch(url);
  var json = JSON.parse(response.getContentText());
  return json.org;
}

function cekIP() {
  var url = "http://api.ipify.org/?format=json";
  var response = UrlFetchApp.fetch(url);
  var json = JSON.parse(response.getContentText());
  return json.ip;
}

function doGet(request) {
  var template = HtmlService.createTemplateFromFile('index.html')
  var pageData = template.evaluate()
  .setTitle("Form")
  .addMetaTag("viewport","width=device-width, initial-scale=1")
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
  return pageData;
}

/* @Include JavaScript and CSS Files */
function include() {
  var HTMLString = "<input type='text' class='form-control' id='ip' value='"+ cekIP() +"' readonly>";
  HTMLOutput = HtmlService.createHtmlOutput(HTMLString);
  return HTMLOutput.getContent();
}

/* @Process */
function processForm(x,y,z) {
  var url = "https://docs.google.com/spreadsheets/d/XXXXXXXX-XXXXXXXXX/edit?usp=sharing#gid=XXXXXXXXX"; 
  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("Info Responder"); 
  var lokasi = Maps.newGeocoder().reverseGeocode(y, z);
  alamat= lokasi.results[0].formatted_address;
  ws.appendRow([x,cekIP(),orgIP(cekIP()),y,z,alamat]);
}

var url = diganti dengan url Google Sheet pada tab yang untuk menyimpan data

var ws = nama Info Responder dapat diganti dengan nama Tab pada Google Sheet dimana data disimpan

 

Kemudian tekan tanda + pada sisi atas, dan buat file dengan nama index.html

 

dan kemudian isi dengan file dibawah ini :

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
</head>
<body onload="getLocation()">
    <div class='container'>
                <form>
                    <p class='h4 mb-4 text-center'>Klik 'Isi Presensi' untuk melanjutkan!!</p>
                    <p>Aktifkan GPS SmartPhone kalian dan izinkan akses lokasi untuk mendapatkan unique id, silakan reload jika anda belum mengizinkan akses lokasi.</p>
                    <div class='form-group'>
                        <label for='ip'>IP Address:</label>
                        <?!= include(); ?>
                    </div>
                    <div class='form-group'>
                        <label for='unik'>Unique ID:</label><p>copy Unique ID dan masukkan kedalam Google Form</p>
                        <input type='text' class='form-control' id='unik' readonly>
                    </div>
                    <a type="button" class="btn btn-primary" href='[isi dengan URL Google Form yang sudah dibuat]' target='_blank'>Isi Presensi</a>
                </form>
    </div>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
    <script>
    function getLocation() {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
      }
    }
    function makeid() {
       var result           = '';
       var characters       = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
       var charactersLength = characters.length;
       for ( var i = 0; i < 7; i++ ) {
          result += characters.charAt(Math.floor(Math.random() * charactersLength));          
       }
       document.getElementById("unik").value = result;
       return result;
    }
    function showPosition(position) {
        google.script.run.processForm(makeid(),position.coords.latitude,position.coords.longitude);
    }
    </script>
</body>
</html>

Apabila file Code.gs dan index.html sudah terisi dengan kode diatas, maka saatnya untuk Test Deployment dan buat New Deployment

Saat deploy jangan lupa untuk memilih opsi Webapp

Isi Description pada point 1 dan langsung tekan Deploy setelahnya pada point 2

Apabila sudah muncul jendela seperti dibawah ini maka link script sudah bisa dicoba

Apabila link script dibuka maka tampilannya akan seperti berikut

Dan berikut ini adalah data yang berhasil direkam melalui script yang sudah dibuka tadi

 

Tinggal diaplikasikan saja ke Google Form dan outputnya ke Google Sheet. Selamat mencoba …..

Exit mobile version