
Cara Guna Google Apps Script untuk Automasikan Google Sheets - dan Kelemahannya
- Hazwan S
- May 2
- 6 min read
TL;DR: Google Apps Script (GAS) adalah alat percuma dalam Google Workspace yang membolehkan anda tulis kod JavaScript-style untuk automasikan Google Sheets - sambung dua spreadsheet, hantar email automatik, buat trigger masa, dan sambung ke API luar. Percuma, tidak perlukan server. Tapi ada had yang serius: 6 minit execution limit, tiada real-time processing, dan tidak sesuai untuk data besar atau multi-user apps.
Apa Itu Google Apps Script?
Google Apps Script (GAS) adalah persekitaran pengaturcaraan berasaskan JavaScript yang dibina terus dalam ekosistem Google. Anda boleh akses terus dari Google Sheets, Google Docs, atau Gmail - tanpa perlu pasang apa-apa.
Ia berjalan di server Google (cloud), bukan di komputer anda. Ini bermakna:
Percuma untuk pengguna Google Workspace dan Gmail biasa
Tiada setup - langsung boleh mula kod
Berjalan automatik mengikut schedule atau event yang anda tetapkan
GAS sangat popular di kalangan pengurus bisnes kecil, guru, dan penganalisis data yang mahu automasikan kerja berulang dalam spreadsheet tanpa perlu mengupah developer.
Cara Akses Google Apps Script
Dari Google Sheets:
Buka spreadsheet anda di sheets.google.com
Klik menu Extensions di bar atas
Pilih Apps Script
Editor GAS akan buka dalam tab baru
Dari script.google.com:
Terus pergi ke script.google.com untuk buat projek baru yang tidak terikat kepada spreadsheet tertentu

Editor GAS kelihatan seperti IDE biasa: panel kiri untuk fail, panel utama untuk kod, butang Run dan Debug di atas.
Guna Kes Paling Popular: Sambung Dua Google Sheets
Ini adalah keperluan paling biasa - salin data dari satu spreadsheet ke spreadsheet lain secara automatik.
Contoh Kod: Salin Data dari Sheet A ke Sheet B
function sambungDuaSheets() {
// ID spreadsheet sumber (ambil dari URL)
var sourceId = 'MASUKKAN_ID_SPREADSHEET_SUMBER';
var targetId = 'MASUKKAN_ID_SPREADSHEET_TARGET';
// Buka kedua-dua spreadsheet
var sourceSheet = SpreadsheetApp.openById(sourceId).getSheetByName('Data');
var targetSheet = SpreadsheetApp.openById(targetId).getSheetByName('Ringkasan');
// Ambil semua data dari sumber
var data = sourceSheet.getDataRange().getValues();
// Kosongkan sheet target dulu
targetSheet.clearContents();
// Tulis data ke sheet target
targetSheet.getRange(1, 1, data.length, data[0].length).setValues(data);
Logger.log('Selesai! ' + data.length + ' baris disalin.');
}Cara ambil ID Spreadsheet:
Dari URL: https://docs.google.com/spreadsheets/d/**ID_DI_SINI**/edit
Salin bahagian panjang antara /d/ dan /edit
Langkah Jalankan Kod
Tampal kod di atas ke editor
Ganti MASUKKAN_ID_... dengan ID spreadsheet sebenar
Klik butang Run (atau tekan Ctrl+Enter)
Pertama kali: Google akan minta kebenaran akses - klik Review Permissions dan benarkan
Semak log di bawah: View > Logs untuk confirm berjaya
Jenis-Jenis Trigger: Jadual Automatik
Trigger adalah ciri paling berguna dalam GAS - ia jalankan fungsi anda secara automatik tanpa perlu klik Run setiap kali.

Cara Set Trigger
Dalam editor GAS, klik ikon jam (Triggers) di panel kiri
Klik Add Trigger di bawah kanan
Pilih tetapan:
Tetapan | Pilihan |
Function | Pilih fungsi yang mahu dijalankan |
Event Source | Time-driven / Spreadsheet |
Type of time trigger | Minit, jam, harian, mingguan, bulanan |
Time of day | Tetapkan julat masa |
Jenis Trigger yang Tersedia
Time-based (Jadual Masa):
Setiap minit / 5 minit / 10 minit / 15 minit / 30 minit
Setiap jam
Setiap hari (pilih selang waktu)
Setiap minggu (pilih hari)
Setiap bulan
Spreadsheet Event:
onOpen - jalankan bila spreadsheet dibuka
onEdit - jalankan bila ada sel yang diedit
onChange - jalankan bila struktur spreadsheet berubah
onFormSubmit - jalankan bila Google Form disubmit
Contoh Lebih Berguna: Hantar Email Automatik
Ini contoh yang sangat popular untuk notifikasi kehadiran, laporan harian, atau alert stok.
Kod: Hantar Email Ringkasan Harian
function hantarEmailRingkasan() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Jualan');
var data = sheet.getDataRange().getValues();
// Kira jumlah jualan hari ini
var today = new Date().toLocaleDateString('ms-MY');
var totalJualan = 0;
var bilanganTransaksi = 0;
for (var i = 1; i < data.length; i++) { // mulai row 2 (skip header)
if (data[i][0] == today) { // kolum A = tarikh
totalJualan += data[i][3]; // kolum D = jumlah
bilanganTransaksi++;
}
}
// Hantar email
var emailPenerima = 'bos@syarikat.com';
var subjek = 'Laporan Jualan ' + today;
var mesej = 'Laporan Harian:\n\n' +
'Bilangan Transaksi: ' + bilanganTransaksi + '\n' +
'Jumlah Jualan: RM ' + totalJualan.toFixed(2) + '\n\n' +
'Dijana automatik oleh Google Apps Script.';
GmailApp.sendEmail(emailPenerima, subjek, mesej);
Logger.log('Email dihantar ke ' + emailPenerima);
}Set trigger setiap hari pukul 6PM - awak dapat email ringkasan jualan setiap malam tanpa buat apa-apa.
Sambung ke Sistem Luar (API Integration)
GAS boleh buat HTTP request ke API luaran - bermakna spreadsheet anda boleh bercakap dengan hampir mana-mana sistem.

Contoh: Hantar Notifikasi ke Telegram
function hantarTelegram(mesej) {
var botToken = 'TOKEN_BOT_TELEGRAM_ANDA';
var chatId = 'CHAT_ID_ANDA';
var url = 'https://api.telegram.org/bot' + botToken + '/sendMessage';
var payload = {
'chat_id': chatId,
'text': mesej,
'parse_mode': 'HTML'
};
var options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
// Fungsi utama - panggil dari trigger
function semakStokDanNotifikasi() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Inventori');
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var namaItem = data[i][0];
var stokSedia = data[i][2];
var hadMinimum = data[i][3];
if (stokSedia < hadMinimum) {
hantarTelegram('⚠️ STOK RENDAH: ' + namaItem + ' - Baki: ' + stokSedia);
}
}
}Dengan cara ini, spreadsheet Google Sheets anda boleh jadi sistem notifikasi stok automatik.
Kelemahan Google Apps Script: Perkara Yang Perlu Awak Tahu
GAS sangat berguna - tapi ia ada had yang serius. Ramai orang yang bina sistem penting di atas GAS kemudian menyesal bila ia gagal di saat kritikal.

Had dan Kuota Google Apps Script (Akaun Biasa)
Had | Had Harian | Had Minit |
Masa Pelaksanaan Skrip | - | 6 minit per run |
Emel Dihantar | 100 emel/hari | - |
URL Fetch (API calls) | 20,000 panggilan/hari | - |
Trigger Dijalankan | 20 trigger/hari | - |
SpreadsheetApp Read | Tidak terhad (tapi perlahan) | - |
Saiz Spreadsheet | Had memori skrip ~50MB | - |
Kelemahan 1: Had Masa 6 Minit
Ini had paling kritikal. Jika fungsi anda ambil masa lebih dari 6 minit, Google akan hentikannya secara paksa tanpa habiskan tugasan. Data mungkin tersimpan separuh jalan - kondisi yang bahaya untuk rekod penting.
Contoh kes masalah: Proses 10,000 baris data dari spreadsheet. Kalau ambil 8 minit - skrip dihentikan di baris ke-7,500. Tiada error message yang jelas kepada pengguna.
Workaround: Pecahkan kerja kepada "batch" yang kecil, simpan progress di PropertiesService, dan jadualkan trigger untuk teruskan dari mana berhenti. Tapi ini sangat kompleks untuk dibina dan diselenggara.
Kelemahan 2: Tiada Pemprosesan Real-Time
GAS tidak dapat bertindak balas serta-merta kepada perubahan. onEdit trigger ada kelewatan beberapa saat. Untuk sistem yang perlukan respons dalam milisaat (contoh: POS system, booking system), GAS tidak sesuai langsung.
Kelemahan 3: Tidak Scalable untuk Banyak Pengguna
Jika 20 orang edit spreadsheet yang sama pada masa yang sama, trigger boleh berlanggar dan data boleh overwrite antara satu sama lain. GAS tidak ada concurrency control yang proper.
Kelemahan 4: Debugging yang Menyusahkan
Log mesti dilihat di View > Logs - tiada console live
Error message kadang sangat umum ("Exception: Service invoked too many times")
Sukar nak trace bila masalah berlaku dalam trigger yang berjalan semasa awak tidur
Kelemahan 5: Bergantung Sepenuhnya kepada Google
Jika Google tukar polisi, had kuota, atau hentikan ciri tertentu - sistem anda terjejas. Ini sudah berlaku beberapa kali dalam sejarah GAS (contoh: penghapusan beberapa API lama).
Bila TIDAK Guna Google Apps Script
Data lebih dari 50,000 baris yang diproses kerap
Perlukan respons real-time (bawah 1 saat)
Lebih dari 5 pengguna edit serentak
Logik bisnes yang kompleks dengan banyak kebergantungan
Perlukan rekod audit yang ketat (siapa buat apa pada bila)
Alternatif Bila GAS Sudah Tidak Mencukupi
Keperluan | Penyelesaian Yang Lebih Baik |
Automation tanpa kod | Make.com, n8n, Zapier |
Database bisnes yang proper | Airtable, Notion Database |
Sistem FnB / rekod kos | Platform khusus seperti ProfitPulse |
API custom + webhook real-time | Node.js + Supabase |
Automasikan lebih rumit | Python + Google Sheets API v4 |
FAQ: Google Apps Script Malaysia 2026
Adakah Google Apps Script benar-benar percuma?
Ya, percuma untuk pengguna Google Workspace (termasuk akaun Gmail biasa) sehingga had kuota. Jika perlukan had lebih tinggi, Google menawarkan tier berbayar melalui Google Workspace Business.
Boleh ke sambung Google Sheets dengan WhatsApp melalui GAS?
Boleh, secara tidak langsung. GAS boleh hantar HTTP request ke WhatsApp Business API atau Twilio. Tapi WhatsApp Business API ada kos sendiri (bukan percuma). GAS hanya sebagai "penghantar" - kos WhatsApp adalah berasingan.
Boleh ke GAS digunakan tanpa pengetahuan coding?
Tahap asas boleh dipelajari dalam masa beberapa hari dengan sumber online seperti YouTube. Tapi untuk fungsi kompleks dan debugging, pengalaman JavaScript sangat membantu. Ramai orang Malaysia guna GAS dengan bantuan ChatGPT untuk hasilkan kod asas.
Berapa lama trigger GAS boleh berjalan sebelum dikira expired?
Trigger berjalan sehingga 6 minit. Selepas 6 minit, ia dihentikan. Untuk pemula, ini had yang biasanya tidak menjadi masalah. Tapi untuk proses data besar, awak perlu rancang dengan batching strategy.
GAS selamat ke untuk simpan data sensitif seperti data pelanggan?
Data dalam Google Sheets dilindungi oleh sistem keselamatan Google. Tapi GAS sendiri - terutama bila ia buat API calls ke sistem luar - boleh dedahkan data jika kod tidak ditulis dengan berhati-hati. Elak hardcode API keys dalam kod; guna PropertiesService untuk simpan credentials.
Apa perbezaan GAS dengan Microsoft Power Automate?
GAS adalah eksklusif untuk Google Workspace. Power Automate adalah eksklusif untuk Microsoft 365. Fungsi asasnya serupa tapi Power Automate ada antara muka visual (no-code) yang lebih user-friendly untuk pengguna bukan teknikal. GAS perlukan menulis kod.
Artikel ini berguna untuk sesiapa yang mahu automasikan proses manual dalam Google Sheets tanpa perlu mengupah developer - tapi perlu faham had sebelum bergantung sepenuhnya pada GAS untuk sistem bisnes kritikal.



Comments