Integrasi n8n dan Google Sheets untuk Laporan Harian
Kalau tim Anda masih hidup di Google Sheets, n8n bisa mengambil alih pekerjaan yang paling makan waktu: menyalin baris, merapikan data, dan merekap angka setiap pagi. Integrasi n8n Google Sheets bekerja dua arah. n8n bisa membaca baris baru dari sheet, lalu menulis atau memperbarui baris di sheet lain berdasarkan kolom kunci seperti nomor order.
Artikel ini membahas cara menyambungkannya dengan benar, jebakan yang paling sering muncul (duplikat dan kuota API), dan contoh alur laporan harian yang bisa Anda tiru. Kalau Anda baru mengenal n8n, baca dulu panduan belajar n8n dari nol supaya istilah workflow, node, dan trigger sudah terasa familiar.
Menghubungkan kredensial Google dengan benar
Sebelum node Google Sheets bisa dipakai, n8n perlu izin untuk mengakses akun Google Anda. Ada dua pilihan kredensial:
- OAuth2: Anda login dengan akun Google dan memberi izin. Dokumentasi n8n merekomendasikan cara ini karena paling mudah. Di n8n Cloud, kredensial Google Sheets bisa langsung dihubungkan lewat tombol “Sign in with Google”. Kalau n8n Anda self-hosted, Anda perlu membuat OAuth client sendiri di Google Cloud Console terlebih dahulu.
- Service account: akun “robot” milik project Google Cloud. Cocok kalau workflow tidak boleh bergantung pada akun pribadi karyawan. Konsekuensinya, setiap spreadsheet harus di-share ke alamat email service account itu, sama seperti Anda share ke rekan kerja.
Saran praktis: jangan pakai akun Google pribadi admin yang suatu hari bisa resign. Buat akun khusus operasional (misalnya ops@namabisnis.co.id) atau pakai service account, lalu share sheet yang dibutuhkan saja. Kalau Anda ingin memahami apa yang terjadi di balik layar, artikel Google Sheets API menjelaskan cara kerja API-nya.
Membaca baris baru dan mencegah duplikat
Ada dua cara umum untuk membaca data dari sheet.
1. Google Sheets Trigger. Trigger ini memeriksa sheet secara berkala dan menjalankan workflow saat ada baris ditambahkan, baris diubah, atau keduanya. Cocok untuk kasus seperti “setiap ada pesanan baru di sheet, kirim notifikasi ke gudang”.
2. Schedule Trigger + Get Row(s). Workflow jalan di jam tertentu, misalnya jam 6 pagi, lalu mengambil semua baris yang memenuhi filter tertentu. Cocok untuk laporan harian dan rekap.
Masalah yang paling sering muncul adalah duplikat: baris yang sama diproses dua kali, lalu notifikasi terkirim dua kali atau angka di laporan dobel. Beberapa cara mencegahnya:
- Punya kolom ID unik. Setiap baris harus punya kunci yang tidak berulang, misalnya nomor order atau nomor invoice. Tanpa ini, n8n tidak punya cara untuk tahu baris mana yang sudah diproses.
- Tambahkan kolom status. Misalnya kolom “diproses” yang diisi tanggal oleh n8n setelah baris selesai. Saat membaca, filter hanya baris yang kolom itu masih kosong.
- Pakai node Remove Duplicates. Node ini bisa menyaring item yang sudah pernah diproses di eksekusi sebelumnya, berdasarkan nilai kolom tertentu.
- Hindari orang menyisipkan baris di tengah. Kalau admin sering insert row di tengah tabel atau mengurutkan ulang sheet, posisi baris berubah dan trigger bisa bingung. Minta tim menambah data di baris paling bawah saja, atau lewat Google Form.
Satu lagi yang sering bikin bingung: tanggal. Google Sheets menyimpan tanggal sebagai angka seri, jadi di n8n tanggal bisa muncul sebagai angka seperti 46230. Di trigger ada opsi untuk menampilkan tanggal sebagai teks terformat. Pastikan juga locale spreadsheet sudah Indonesia supaya format tanggalnya konsisten.
Menulis dan update baris berdasarkan kunci
Node Google Sheets punya beberapa operasi tulis. Yang paling sering dipakai:
| Operasi | Fungsi | Contoh pemakaian |
|---|---|---|
| Append Row | Menambah baris baru di bagian bawah | Mencatat log pesanan masuk |
| Update Row | Mengubah baris yang sudah ada, tidak menambah baris | Mengubah status order jadi “dikirim” |
| Append or Update Row | Update kalau kuncinya ketemu, tambah baris kalau tidak | Sinkron data pelanggan dari aplikasi lain |
| Get Row(s) | Membaca satu atau banyak baris dengan filter | Mengambil order hari ini |
Untuk Update dan Append or Update, Anda memilih kolom yang dipakai sebagai pencocok (misalnya “no_order”). n8n mencari baris dengan nilai yang sama di kolom itu, lalu memperbarui kolom lain. Supaya pemetaan otomatis berjalan mulus, samakan nama field di data Anda dengan nama header kolom di sheet. Beda satu spasi atau huruf besar saja bisa membuat kolom tidak terisi.
Tips kecil: kunci baris header. Kalau seseorang mengganti nama header “Total” menjadi “Total (Rp)”, workflow Anda bisa berhenti menulis ke kolom itu tanpa ada yang sadar.
Batas kuota API Google Sheets
Google membatasi berapa banyak permintaan yang bisa dikirim ke Sheets API. Menurut dokumentasi resmi Google, batasnya 300 permintaan baca dan 300 permintaan tulis per menit per project, serta 60 per menit per user per project. Kalau terlewati, API membalas dengan error 429 (terlalu banyak permintaan) dan Anda perlu menunggu sebentar sebelum mencoba lagi.
Di pemakaian harian, batas ini jarang tersentuh. Masalah biasanya muncul saat:
- Workflow memproses ratusan baris dan memanggil Google Sheets satu per satu di dalam loop.
- Beberapa workflow memakai kredensial yang sama dan jalan di menit yang sama.
- Trigger polling di-set terlalu sering untuk banyak sheet sekaligus.
Solusinya: baca data sekali dalam jumlah besar lalu olah di n8n, beri jeda dengan node Wait kalau memang harus menulis baris per baris, aktifkan opsi retry on fail di node, dan jadwalkan workflow berat di menit yang berbeda. Kalau data Anda sudah puluhan ribu baris dan terus bertambah, itu tanda sheet mulai kewalahan dan database mungkin lebih cocok.
Contoh laporan harian otomatis
Misalnya sebuah distributor mencatat penjualan harian dari beberapa sales di satu Google Sheet. Setiap pagi, supervisor menghabiskan 30 menit untuk menjumlahkan omzet per sales, per wilayah, dan mengecek order yang belum dikirim. Alurnya di n8n bisa seperti ini:
- Schedule Trigger jalan setiap hari jam 06.30.
- Google Sheets (Get Row(s)) mengambil semua baris dengan tanggal kemarin.
- Node Summarize menjumlahkan omzet per sales dan per wilayah.
- Node IF memisahkan order dengan status “belum kirim” yang umurnya lebih dari dua hari.
- Google Sheets (Append or Update Row) menulis ringkasan ke tab “Rekap Harian” dengan tanggal sebagai kunci. Kalau workflow dijalankan ulang, barisnya diperbarui, bukan dobel.
- Kirim ringkasan lewat email atau Slack ke supervisor dan manajer, lengkap dengan daftar order yang tertahan.
Hasilnya, supervisor membuka hari dengan angka yang sudah jadi, tanpa perlu membuka kalkulator. Tambahkan satu hal lagi: notifikasi kalau workflow gagal, supaya laporan yang tidak datang langsung ketahuan. Ide workflow sejenis bisa Anda lihat di kumpulan template n8n dan di bagian contoh penerapan di halaman utama kami.
Kapan Google Sheets mulai tidak cukup
Google Sheets sangat baik sebagai titik awal: semua orang bisa membukanya dan mudah diubah. Tapi ada tanda-tanda sheet sudah dipaksa bekerja terlalu berat:
- Data sudah puluhan ribu baris dan sheet terasa lambat dibuka.
- Banyak orang mengedit bersamaan dan sering terjadi data tertimpa.
- Anda butuh riwayat perubahan yang rapi per baris.
- Workflow sering kena error kuota.
Di titik itu, n8n tetap bisa dipakai, hanya tujuannya diganti ke database seperti PostgreSQL. Google Sheets bisa tetap dipakai sebagai tampilan ringkas untuk manajemen.
Kalau Anda ingin tahu laporan mana di tim yang paling layak diotomatiskan duluan, Aqilatic bisa membantu memetakannya lewat audit proses gratis. Kami juga bisa membangun dan merawat workflow-nya.
Pertanyaan yang sering muncul
Apakah integrasi n8n dan Google Sheets gratis?
Node Google Sheets tersedia di semua versi n8n, dan pemakaian Google Sheets API tidak dikenakan biaya untuk kebutuhan normal. Biayanya ada di n8n itu sendiri: langganan n8n Cloud atau biaya server kalau self-hosted.
Apakah Google Sheets Trigger langsung jalan saat baris ditambahkan?
Tidak persis seketika. Trigger ini memeriksa sheet secara berkala, jadi ada jeda beberapa menit tergantung pengaturan. Kalau butuh respons instan, kirim data lewat webhook dari form atau aplikasi sumbernya.
Lebih baik pakai OAuth2 atau service account?
Untuk mulai, OAuth2 dengan akun khusus operasional sudah cukup. Service account lebih cocok kalau Anda ingin akses yang tidak terikat ke akun orang tertentu dan ingin mengatur sheet mana saja yang bisa diakses.