Membuat CRUD API Menggunakan Google Sheets (Bagian 2 Read / Get Data)

API Google Sheets Bagian 2

Sebelumnya terima kasih kepada teman teman yang telah menyediakan waktu luang untuk membaca coretan coretan tentang API Google sheet di tulisan saya yang pertama. Tulisan ini adalah lanjutan dari tulisan pertama saya, sehingga agar bisa mengikuti bagian kedua ini dengan baik, disarankan telah membaca tulisan yang pertama.

Bagian kedua ini membahas mengenai mode Read  (Bag pertama membahas mode Create/Insert). Tulisan ini sebenarnya sama seperti yang ditulis oleh mas Tommy, tetapi saya buat lebih simpel penulisan kode GAS (Google Apps Script) agar teman teman yang baru belajar bisa lebih memahaminya.

Seperti biasa, penulisan source code di tutorial ini saya tampilkan di sini dalam bentuk gambar, agar teman teman bisa mengikuti step by step, harapan saya agar teman teman lebih mendalam dalam memahaminya, setuju ya dengan cara yang saya terapkan dalam pembelajaran kali ini 🙂 he ..  he …, ok, langsung saja kita ke petualangan kita. Petualangan pada mode read ini dibagi menjadi dua tahap yaitu

  1. Membuat method doGet
  2. Membuat method get_data
  3. Testing dengan Postman

Membuat method doGet

Karena pada bagian ini kita akan membaca (read) data, maka di file GAS-nya sebaiknya menggunakan method get untuk meng-handle-nya. Untuk membuat method ini, teman teman silakan masuk ke dashboard GAS melalui link ini,  nanti akan muncul beberapa project yang pernah kita kerjakan

Pilihllah project yang teman teman buat saat tutorial bagian pertama, di sini nama file nya adalah latihan, saya klik latihan dan akan menampilkan source code seperti berikut :

Buat sebuah function doGet(e) yang terletak di bawah doPost dan di atas function insert_data

Setelah itu masukan variabel ss, tabelName, sheet, dan action ke dalam method doGet ini, jangan lupa masukan switch sebagai filter untuk action-nya. Blok ini sama persis, bedanya nanti action-nya adalah read.

 

Mungkin teman teman ada yang berfikir kenapa mode read harus dikasih switch untuk filter action-nya. Hal ini dilakukan karena, proses read ada beberapa macam, untuk bagian ini yang kita lakukan adalah membaca seluruh field, bukan spesifik pada field tertentu. Pada case ini, jika action yang diisikan adalah read, maka akan memanggil fungsi get_data yang memiliki dua parameter, parameter pertama adalah tabel yang dibuka pada database yang kita inginkan, dan yang kedua adalah nama tabelnya.

Membuat method get_data

Tadi kita telah membuat method doGet dengan atribut dan action di dalamnya, salah satu actionnya adalah memanggil method get_data(). Sekarang kita akan membuat method get_data yang memiliki tiga parameter. Method ini kita buat persis di bawah method doget().

Di dalam method get_data, tambahkan variabel data yang bertipe JSONObject

 

Kenapa harus dalam bentuk JSONObject, ada yang mau bantu jawab? he he he… Pada umumnya, hasil response dari server, dibungkus dalam bentuk satu JSONObject. JSONObject ditandai dengan tanda { }, sementara JSONArray ditandai dengan [ ]. Terus, kalau server melepar hasil respon nya berupa JSONArray apakah masih bisa diolah? jawabannya adalah bisa. Kalau yang dilempar server adalah JSONArray, maka variabel data di atas dirubah menjadi var data  = [ ]. Untuk kali ini kita menerima hasil respon berupa JSONObject.

Di dalam tulisan saya yang pertama, saya sudah menjelaskan bahwa, satu baris di excel merupakan satu objek, jadi… kalau kita mau membaca semua baris, pada hakikatnya merupakan kumpulan baris (objek) yang ada di Google Sheet. Karena hasil pembacaan berupa kumpulan object, kita harus menampungnya dalam variabel array, nah, nama variabel array penampung objek ini kita namai sesuai sheet(tabel) yang dibuka. Harapanya nanti JSON yang dilempar dari server adalah seperti berikut :

Agar bisa menjadi seperti ini, kita masukan nama sheet (tabel) yang kita buka dalam variabel data yang berjanis JSONObject untuk menampung kumpulan Objek yang mau kita baca. Ikuti kode berikut ini

Data [tabelName] ini akan menghasilkan nama sheet kita ada di dalam JSONObject, sementara get_objek_data(sheet) adalah sebuah method yang kita panggil, dimana method ini akan menghasilkan kumpulan data objek yang mau kita baca, oh ya, jangan lupa kasih tanda “;” setelah get_objek_data(sheet) ya, jadi akan seperti ini get_objek_data(sheet);

Selanjutnya adalah membuat data JSON ini menjadi string dan membuatnya bisa diakses

Apakah ini sudah bisa digunakan? belum … he .. kita kan belum buat fungsi get_objek_data. Langkah selanjutnya adalah kita membuat fungsi get_objek_data di bawah method get_data

Karena fungsi get_objek_data merupakan kumpulan objek dan ketika method ini dipanggil dia menghasilkan JSONArrray, maka kita buat variabel allData yang bertipe array dan memiliki nilai return

Langkah selanjutnya adalah mengisi objek yang ke dalam variabel allData. Satu objek (baris) di dalam Google sheet sebenarnya merupakan kumpulan dari beberapa cell, silakan buka Google Sheet latihan yang telah teman teman buat pada bagian pertama

Misalkan nilai nis 101086, adalah cell yang terletak di baris (row)  dua dan kolom (column) satu. Untuk case ini, satu objek terdiri dari tiga cell value yaitu nis, nama, dan status. Oleh karena itu, untuk menampilkan semua objek, kita harus melakukan looping untuk mendapatkan baris dan kolomnya. Sebelum kita melakukan looping ini, kita buat variabel rangeObjek dan jumlahKolom.

method getDataRange().getValues() akan menghasilkan sebuah array yang nilainya adalah seperti ini :

[[baris_pertama][kolom1,kolom2,kolom3,dst],[baris_kedua][kolom1,kolom2,kolom3], … dst], untuk penjelasan lebih detail, teman teman bisa melihatnya di sini

Sementara variabel jumlahKolom digunakan untuk mengetahui jumlah kolom yang ada isinya alias tidak kosong :). Ok, lanjut ke langkah selanjutnya, kita akan melakukan looping row untuk mendapatkan objeknya, tambahkan looping di method get_objek_data

row dimulai dari angka 1 karena kita mau memulai pengumpulan objek dari baris ke dua, karena objek nomor dua kalau di dalam array mempunyai index 1. Jadi 1 disini adalah index baris kedua di array-nya. sementara var objek adalah variabel yang digunakan untuk menyimpan JSONObject-nya, rangeObjek.length untuk mengetahui banyak baris yang ada nilainya. Setelah kita melakukan looping untuk row, selanjutnya kita melakukan looping column di dalam looping row ini

column dimulai dari angka nol karena kita mau memulai dari kolom pertama. Masuk ke bagian inti, yaitu pengumpulan objek cell berdasarkan nomor baris dan kolom yang dimilikinya. Pengumpulan cell ini kita masukan di dalam looping column-nya.

objek[rangeObjek[0][column]] akan menghasilkan field nama dari setiap kolom yang ada di bagian header, jadi akan seperti ini :

  • objek[rangeObjek[0][0]] akan menghasilkan nama kolom bernilai “nis”
  • objek[rangeObjek[0][1]] akan menghasilkan nama kolom bernilai “nama”
  • objek[rangeObjek[0][2]] akan menghasilkan nama kolom bernilai “status”

Jadi nama di tiap kolom didapatkan dari baris dan kolom di tiap cell, rangeObjek[0] akan menghasilkan baris pertama. Sementara rangeObjek[row][column] merupakan nilai dari cell yang kita mau ambil, ambil contoh seperti ini :

  • rangeObjek[1][0] akan menghasilkan nilai 101086
  • rangeObjek[1][1] akan menghasilkan nilai wakhyudi
  • rangeObjek[1][2] akan menghasilkan nilai hadir

Setelah cell dalam satu baris (objek) berhasil dikumpulkan, kita masukan ke dalam variabel array allData yang telah kita buat sebelumnya

Ok, tahapan penulisan di GAS nya sudah selesai, selanjutnya adalah melakukan publish web app nya (caranya sama seperti pada bagian pertama), naikan versi web app-nya, saat bagian pertama, versi web app kita kan masih satu, nah karena ini ada perubahan kita naikan ke versi dua (NOTE : setiap perubahan, sekecil apapun di sisi logic, wajib hukumnya untuk menaikan versi web app nya, jika tidak webservice nya tidak bisa bekerja).

Testing dengan Postman

Langkah terakhir yaitu melakukan pengujian webservice yang telah kita buat dengan Postman

Ketika tombol send ditekan akan menghasilkan output JSON seperti ini :

 

“Selama Allah masih memberi nafas, jangan pernah menyerah”

Dilihat 829 kali

Related Posts

About The Author

Android Dev , ERP / Odoo Dev and author