Langsung ke konten utama

Seri 3: Mengotomasi Google Sheets Menggunakan Script

Membaca, Menulis, dan Memformat Data Secara Otomatis


Di dua seri sebelumnya, kita sudah mengenal dasar Google Apps Script (GAS) dan belajar menulis serta menjalankan fungsi sederhana.

Sekarang saatnya kita melangkah lebih jauh — menghubungkan Apps Script langsung dengan data di Google Sheets.

Melalui seri ini, kita akan belajar:

  • Membaca dan menulis data di sel spreadsheet,

  • Menambahkan baris secara otomatis,

  • Membuat format tabel otomatis,

  • Serta membuat fungsi auto timestamp agar setiap perubahan data bisa terekam otomatis.

Dengan memahami ini, kita sudah bisa mengotomatiskan banyak pekerjaan administratif hanya dengan beberapa baris kode.


⚙️ 1. Mengenal Objek SpreadsheetApp dan Sheet

Untuk berinteraksi dengan Google Sheets, Apps Script menyediakan objek utama bernama SpreadsheetApp.

Dari objek ini, kita bisa mengakses dokumen yang sedang aktif, lalu memilih lembar kerja (sheet) di dalamnya.

Contoh dasar:

function contohSpreadsheetApp() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const sheet = spreadsheet.getActiveSheet(); Logger.log(sheet.getName()); }

Kode di atas akan menampilkan nama sheet aktif di log.
SpreadsheetApp adalah pintu utama, dan sheet adalah halaman tempat kita berinteraksi dengan data.


📖 2. Membaca Data dari Sel dan Range

Kita bisa mengambil data dari sel tertentu menggunakan getRange() dan getValue().

Contoh:

function bacaSatuSel() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const data = sheet.getRange("A1").getValue(); Logger.log("Isi sel A1 adalah: " + data); }

Kalau kita ingin membaca banyak data sekaligus, gunakan getValues():

function bacaBeberapaSel() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const data = sheet.getRange("A1:B5").getValues(); Logger.log(data); }

getValues() akan mengembalikan array dua dimensi, di mana setiap baris adalah array dari nilai di kolom.


✍️ 3. Menulis Data ke Spreadsheet

Untuk menulis data, kita menggunakan fungsi kebalikannya — setValue() dan setValues().

Contoh sederhana:

function tulisData() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.getRange("A1").setValue("Halo dari Apps Script!"); }

Jika kita ingin menulis banyak nilai sekaligus:

function tulisBeberapaData() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const data = [ ["Nama", "Kota"], ["Bagus", "Yogyakarta"], ["Rina", "Bandung"], ["Dewi", "Jakarta"] ]; sheet.getRange("A1:B4").setValues(data); }

➕ 4. Menambahkan Baris Baru Otomatis

Kita bisa menambahkan data baru ke baris terakhir yang berisi data, menggunakan getLastRow():

function tambahBarisBaru() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const barisBaru = sheet.getLastRow() + 1; sheet.getRange(barisBaru, 1).setValue("Data baru otomatis"); }

Setiap kali fungsi dijalankan, data baru akan ditulis di baris paling bawah, tanpa menimpa data sebelumnya.


🎨 5. Membuat Format Otomatis

Apps Script juga bisa membantu kita mengatur format sel, warna, dan ukuran kolom secara otomatis.

Contoh:

function formatTabel() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const range = sheet.getRange("A1:B1"); range.setFontWeight("bold"); range.setBackground("#f2f2f2"); sheet.autoResizeColumns(1, 2); }

Hasilnya, baris pertama akan diformat dengan huruf tebal, latar belakang abu-abu muda, dan lebar kolom disesuaikan otomatis.


🧮 6. Latihan Mini: Membuat Log Aktivitas Sederhana

Kita buat contoh sederhana yang akan:

  1. Menambahkan baris baru,

  2. Menulis nama dan waktu eksekusi otomatis.

function logAktivitas() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const baris = sheet.getLastRow() + 1; const waktu = new Date(); sheet.getRange(baris, 1).setValue("Aktivitas otomatis"); sheet.getRange(baris, 2).setValue(waktu); }

Setiap kali dijalankan, fungsi ini akan menambahkan log baru di bawah data lama.





⏰ 7. Membuat Fungsi Auto Timestamp (Otomatis Saat Diedit)

Kadang kita ingin menambahkan tanggal/waktu otomatis setiap kali isi sel berubah.
Kita bisa membuat fungsi trigger onEdit() untuk itu:

function onEdit(e) { const sheet = e.source.getActiveSheet(); const range = e.range; if (range.getColumn() === 1 && range.getRow() > 1) { sheet.getRange(range.getRow(), 2).setValue(new Date()); } }



Penjelasan:

  • Fungsi ini berjalan otomatis setiap kali kita mengedit sesuatu di spreadsheet.

  • Jika perubahan terjadi di kolom A, maka kolom B akan diisi dengan waktu edit.

  • Ini sangat berguna untuk membuat log aktivitas, tracking update, atau absensi otomatis.



Pada seri ini kita sudah belajar banyak hal penting:
  • Mengenal objek SpreadsheetApp dan Sheet,

  • Membaca dan menulis data ke spreadsheet,

  • Menambah baris otomatis,

  • Membuat format otomatis,

  • Dan menambahkan fungsi auto timestamp saat data berubah.

Dengan kemampuan ini, kita sudah bisa membuat berbagai otomatisasi kecil yang mempercepat pekerjaan sehari-hari — mulai dari mencatat transaksi otomatis, log aktivitas, hingga format laporan mingguan.


📅 Seri Selanjutnya:

➡️ Seri 4 — Trigger dan Event Otomatis di Google Apps Script
Kita akan mempelajari cara menjalankan script tanpa harus menekan tombol Run lagi.
Script bisa berjalan otomatis saat waktu tertentu, saat dokumen dibuka, atau saat data diubah — semuanya bisa diatur dengan trigger.

Komentar

Postingan populer dari blog ini

Cara Efektif Menggunakan StringGrid

StringGrid merupakan salah satu VCL yang sangat berguna. Jika anda sudah familiar dengan Webbased Application, anda bisa analogikan StringGrid dengan Table. Table digunakan untuk meenampilkan data. Adapun StringGrid, selain sebagai komponen untuk menampilkan data, dia juga juga bisa sebagai tempat untuk memasukkan data, lihat gambar di bawah ini : Pada gambar di atas, saya menampilkan form jurnal umum sebagai contoh penggunaan StringGrid. Pada contoh di atas, stringgrid dipakai untuk memasukkan data item jurnal berupa Kode dan nama perkiraan, status Debet/Kredit dan Nominal. Untuk memanfaatkan Stringgrid saya mempunyai beberapa konstanta yang mencerminkan nomor urut kolom, misalnya _KolKode merujuk pada kolom Kode Perkiraan, _KolNama merujuk pada kolom Nama. Lebih jelasnya lihat baris kode berikut : Const _KolKode : Integer = 0; _KolNama : Integer = 1; _KolDK : Integer = 2; _KolNominal : Integer = 3; Konstanta-konstanta tersebut saya pakai di beberapa tempat. Diantaran...

Tanda-tanda programmer buruk

Dalam dunia pekerjaan, ada berbagai cara untuk menjadi tidak efektif. Berikut adalah beberapa perilaku yang sering terjadi pada beberapa programmer yang pernah saya kerjakan selama bertahun-tahun: "Saya Seorang Insinyur Perangkat Lunak, Bukan Programmer"  Anda tahu seperti apa mereka. Mereka membawa keyboard mekanis ke kantor? Mereka tidak bisa ikut dalam pertemuan harian karena terlalu sibuk memikirkan masalah tersebut (hanya butuh 5 menit untuk menyampaikan apa yang Anda pikirkan). Berapa lama waktu yang dibutuhkan untuk mendapatkan latte? Saya tidak begitu yakin bagaimana seseorang bisa menjadi begitu sombong dengan pengalaman 3 tahun, tapi begitulah adanya. Saya suka mengesankan orang dengan gelar pekerjaan saya. Siapa? Apa maksud Anda, tidak ada yang peduli. Mungkin sebaiknya Anda menghabiskan lebih banyak waktu untuk bekerja dan sedikit waktu untuk memikirkan status Anda? Papan Tulis di Belakang  Beberapa orang di industri ini memiliki gelar. Saya pernah bekerja deng...

Singleton Pattern

Motivasi Kadang ada keadaan di mana kita hanya boleh memiliki satu instan dari suatu kelas. Sebagai contoh, kita hanya boleh memiliki satu window manager (atau satu sistem file atau satu spooler printer) pada satu aplikasi. Biasanya singleton digunakan untuk managemen sumber daya internal maupun eksternal secara terpusat dan bisa diakses dimanapun. Singleton merupkan salah satu design pattern yang paling sederhana. Singleton hanya melibatkan satu kelas yang bertanggung jawab untuk menginstansiasi dirinya sendiri dan pada saat yang bersamaan menyediakan akses secara global terhadap instan tersebut. Pada pattern singleton, instan bisa diakses dari manapun tanpa harus memanggil contructor dari kelas instan tersebut Tujuan • Memastikan bahwa satu kelas hanya bisa dibuat instannya sekali. • Menyediakan akses secara global terhadap instan singleton tersebut. Implementasi Pada bahasa pemrograman Java, implementasi dari singleton adalah dengan membuat sebuah atribut static pada...