· sistem  · 7 min read

Dulu Saya Pilih n8n karena Visual, Sekarang Apps Script karena AI

Lima kriteria memilih Apps Script atau n8n, dari 19 script dan 3 workflow n8n yang jalan di kantor saya.

Lima kriteria memilih Apps Script atau n8n, dari 19 script dan 3 workflow n8n yang jalan di kantor saya.

Pilihan antara Apps Script dan n8n di Edavos ditentukan oleh lima hal, dan tidak satu pun berasal dari daftar fitur. Kelimanya: di mana integrasinya sudah hidup, bagaimana sumber datanya dijangkau, berapa kali alurnya jalan per hari, siapa yang menulis dan merawatnya, dan siapa yang perlu membaca alurnya saat ada yang rusak.

Buktinya timpang, jadi saya sebut di depan. Dari otomasi terjadwal di Edavos, 19 berupa Google Apps Script dan 3 berupa workflow n8n (rinciannya di sini). Tabel di bawah ditarik dari keputusan di dua sisi itu, termasuk satu keputusan yang hari ini akan saya ambil berbeda.

Kapan memakai Apps Script, kapan n8n?

Pakai Apps Script kalau semua yang disentuh alurnya bisa dijangkau dari dalam Google, baik layanan Google sendiri maupun sistem lain yang punya API HTTP. Pakai n8n kalau alurnya butuh protokol yang tidak tersedia di Apps Script, kalau satu run makan lebih dari 6 menit, atau kalau orang yang merawatnya tidak menulis kode.

KriteriaCondong ke Apps ScriptCondong ke n8nKasus di Edavos
Integrasi yang sudah jalanKoneksi ke sistem tujuan sudah dipegang script lainSistem tujuan sudah tersambung di n8nKoneksi ke Accurate sudah hidup di Apps Script lewat script reminder piutang dan forecast cashflow
Cara menjangkau sumber dataLayanan Google, atau sistem luar yang punya API HTTPButuh IMAP, TCP, atau protokol lain selain HTTPInbox lead ada di Gmail, tapi n8n membacanya lewat IMAP
Jumlah run per hari dikali durasi satu runTotal muat di 90 menit (akun Gmail biasa) atau 6 jam (Workspace) per hariMelewati batas itu, atau satu run lebih dari 6 menitPolling inbox tiap menit muat di kuota Workspace selama satu run di bawah 15 detik
Siapa yang menulis dan merawatAda yang menulis kode, termasuk lewat AIPerawatnya lebih nyaman menyusun node di kanvasAlur lead dibangun di n8n karena alasan ini
Siapa yang membaca alurnya saat rusakMesin: kode di repo bisa dicari dan dibandingkan per versiManusia: kanvas memperlihatkan seluruh alur sekali lihat7 lead tertahan karena satu daftar header tersimpan di dalam node

Baris kedua sering disalahpahami. Apps Script menjangkau dunia luar lewat UrlFetchApp, yang menurut dokumentasi resminya berkomunikasi dengan mengambil URL. Mailbox di hosting biasa yang cuma bisa dibaca lewat IMAP ada di luar jangkauan itu, sementara node Email Trigger di n8n membacanya langsung.

Alur lead dibangun di n8n karena kanvasnya

Lead dari form website Edavos masuk ke satu inbox yang dijaga bergantian oleh dua orang, masing-masing dengan pekerjaan utama sendiri. Menurut pengamatan saya, sebelum ada otomasi mayoritas lead sampai ke sales lebih dari 30 menit setelah masuk, dan beberapa kali sampai hitungan jam. Sesudah dipindah ke n8n, perkiraan saya sekitar 1 menit, mengikuti interval cek IMAP.

Saya memilih n8n untuk alur ini karena visual. Waktu itu AI belum bisa saya andalkan untuk menulis kode, dan menyusun node di kanvas lebih nyaman daripada menulis script dari nol.

Alurnya pendek. Email Trigger membaca inbox lewat IMAP, lalu node berikutnya memfilter subject, mengekstrak data, mencatat ke Sheet, menilai valid atau tidak, dan mengirim ke grup sales di Google Chat (cara kerjanya di sini).

Pria membandingkan printout sheet yang satu kolomnya digunting dengan alur kotak di laptop, satu kotak merah bata

Kalau diukur dengan tabel di atas, satu-satunya baris yang memenangkan n8n untuk alur ini adalah siapa yang menulis. Inbox-nya Gmail, semua tujuannya layanan Google, dan polling tiap menit muat di kuota Workspace selama satu run di bawah 15 detik. Baris itu juga yang sudah berubah.

Kanvas terbaca oleh manusia, tidak oleh grep

Kolom kosong pernah dihapus dari sheet pencatat lead. Pengecekan yang saya jalankan bersama Claude memeriksa formula sheet dan daftar Customer Match di Google Ads, lalu menyimpulkan tidak ada yang terdampak.

Node Append to OCT di n8n adalah node Google Sheets dengan pemetaan kolom yang ditulis manual (mode Define Below). Di mode itu node menyimpan daftar header sendiri, dan menolak append dengan pesan Column names were updated after the node's setup begitu satu header hilang dari sheet.

Node yang mengirim notifikasi ke sales ada sesudahnya, di jalur yang sama. Akibatnya 7 lead tidak tercatat dan tidak sampai ke sales sampai diperbaiki, dan yang menemukannya tim, sebelum ada alarm apa pun.

Kanvas n8n memperlihatkan seluruh alur ke orang yang membukanya. Konfigurasi node hidup di database n8n, dan pencarian di repo tidak pernah sampai ke sana.

Perbaikannya dua, dan yang lebih penting adalah yang kedua.

Mencari header sebelum mengubah kolom

Sebelum header sheet dihapus atau diganti namanya, Claude masuk ke VPS lewat SSH dan mengambil semua workflow dari API n8n. Nama header itu dicari di parameter tiap node, termasuk di dalam Code node. Kalau ketemu, node-nya diperbarui dulu, baru sheet-nya diubah.

Cara ini menutup titik buta yang membuat pengecekan pertama meleset. Pengecekannya tetap bergantung pada ada yang ingat menjalankannya sebelum mengubah kolom.

Mengantar lead tidak lagi menunggu pencatatan

Perbaikan kedua mengubah strukturnya. Node pencatat sekarang punya jalur error: kalau append gagal, satu Code node menyusun ulang baris dari data yang sudah diekstrak, lalu alurnya lanjut ke penilaian dan ke notifikasi sales. Gagal mencatat tidak lagi berarti gagal mengantar.

Jalur error itu butuh alert sendiri. Workflow Error Alert yang terpasang di ketiga workflow aktif tidak terpicu kalau kegagalan append sudah ditangkap jalur error, jadi jalur itu mengirim pesannya sendiri ke space Google Chat khusus error n8n.

Apakah kuota Apps Script cukup untuk polling tiap menit?

Untuk akun Workspace, kuota trigger Apps Script cukup untuk polling tiap menit selama satu run selesai di bawah 15 detik. Untuk akun Gmail biasa, batasnya sekitar 3.7 detik per run. Trigger waktu Apps Script bisa jalan tiap menit, jadi polling tiap menit berarti 1,440 run per hari.

BatasAkun Gmail biasaGoogle Workspace
Total runtime trigger per hari90 menit6 jam
Durasi rata-rata maksimal per run kalau polling tiap menitsekitar 3.7 detik15 detik
Baca-tulis Gmail per hari (di luar kirim)20,00050,000

Sumber: halaman kuota resmi Apps Script, Okt-26. Baris kedua hasil bagi saya sendiri dari baris pertama.

Sebelum memakai kuota sebagai alasan pindah ke n8n, buka halaman Executions di project Apps Script Anda, ambil durasi rata-rata satu run, lalu kalikan dengan jumlah run per hari.

Berapa biaya menjalankan n8n sendiri?

Biaya menjalankan n8n self-host di Edavos di bawah Rp 90,000 per bulan, yaitu sewa satu VPS yang dipakai bersama otomasi lain, tanpa langganan n8n. Tagihan tujuh bulan terakhir ada di antara Rp 86,196 dan Rp 89,176. Angka itu belum menghitung waktu merawatnya.

VPS itu juga membawa pekerjaan perawatan. Ada backup otomatis, watchdog yang me-restart n8n saat tidak merespons, monitor dari luar yang memeriksa n8n bisa diakses, dan satu routine perawatan bulanan. Apps Script tidak membawa pekerjaan ini, karena servernya milik Google.

Di mana Apps Script yang mentok

Masalah Apps Script di Edavos ada di trigger yang tersebar. Tiap script hidup di project-nya sendiri, kebanyakan menempel ke satu spreadsheet, dan trigger dipasang per project. Untuk tahu script mana yang jalan jam berapa, dulu saya harus membuka project satu per satu.

Script audit trigger memperlihatkan bentuk masalahnya. Salinannya ada di setiap project dan semuanya menulis ke satu sheet, jadi tiap perubahan harus disalin manual ke semua project. Semua konstantanya dideklarasikan di dalam fungsi, karena Apps Script tidak memperingatkan tabrakan nama global: kalau dua file di satu project mendeklarasikan nama yang sama, definisi terakhir diam-diam menang.

Sekarang tiap script dicatat di satu registry di repo yang dibaca Claude di awal setiap sesi, lengkap dengan entry point dan jadwal trigger yang seharusnya terpasang. Untuk tahu apa yang seharusnya jalan jam berapa, saya membuka satu file.

Aturan yang saya pakai sekarang

Otomasi baru di Edavos dibangun di Apps Script, kecuali yang harus menjangkau sistem di luar Google tanpa API HTTP. Alur lead tetap di n8n, karena memindahkannya berarti membangun ulang dan menguji alur yang mengantar lead tiap hari, sementara titik buta yang membuat 7 lead tertahan sudah ditutup.

Untuk otomasi Anda berikutnya, isi lima baris tabel di atas sebelum memilih. Kalau satu-satunya baris yang memenangkan n8n adalah siapa yang menulis, coba tulis versi Apps Script-nya dulu bersama AI.

- Daud (@daudwihardi)

Daud Wihardi

Catatan Terkait

Lihat semua catatan »
34 Pekerjaan Berulang yang Jalan Sendiri, dalam Tiga Lapisan

34 Pekerjaan Berulang yang Jalan Sendiri, dalam Tiga Lapisan

Inventaris otomasi di kantor saya, dibagi tiga lapisan, dan kenapa lapisan paling membosankan dibangun duluan.

Otomatisasi Lead dengan n8n: 80 Leads Sebulan Tanpa Ada yang Jaga Inbox

Otomatisasi Lead dengan n8n: 80 Leads Sebulan Tanpa Ada yang Jaga Inbox

Delapan node n8n mengganti dua orang yang bergantian membuka inbox, dengan ongkos di bawah Rp 90,000 sebulan.

Forecast Cashflow dari Accurate: Satu Setengah Jam Seminggu Jadi Sepuluh Menit

Forecast Cashflow dari Accurate: Satu Setengah Jam Seminggu Jadi Sepuluh Menit

Forecast cashflow satu setengah jam per minggu jadi sepuluh menit, sementara tab dan email tetap menunggu keputusan orang.

Tujuh dari 12 Claude Skill yang Saya Hapus Ternyata Cuma Data

Tujuh dari 12 Claude Skill yang Saya Hapus Ternyata Cuma Data

Cara memisahkan instruksi dari data di folder kerja Anda, dan berapa yang saya bayar karena melewatkannya selama dua bulan.

Wiki Karpathy Baru Separuh Loop

Wiki Karpathy Baru Separuh Loop

Wiki membuat pekerjaan saya bisa ditanyakan ke Claude. Yang membuatnya belajar adalah keputusan yang punya kondisi batal.

Skill Claude saya mengulang rekomendasi yang sudah dikerjakan

Skill Claude saya mengulang rekomendasi yang sudah dikerjakan

Perbaikannya satu file teks yang menyimpan tiap keputusan beserta kondisi yang membatalkannya.