TL;DR
IMPORTHTML narik tabel atau list dari halaman web ke Google Sheets pakai satu rumus, sementara IMPORTXML bisa ngambil elemen apa pun dari halaman lewat XPath. Keduanya update otomatis tiap sekitar sejam, jadi datamu tetap segar tanpa copy-paste manual. Batasannya: keduanya cuma bisa baca HTML mentah, jadi halaman yang isinya dimuat pakai JavaScript nggak bakal kebaca.
IMPORTHTML dan IMPORTXML adalah dua fungsi Google Sheets yang narik data langsung dari halaman web ke spreadsheet kamu.
Jadi kalau kamu selama ini copy-paste tabel kurs, harga komoditas, atau data BPS tiap minggu. Kerjaan itu bisa hilang.
Datanya update sendiri tiap sekitar sejam. Di bawah ini cara pakainya, plus error yang bikin 90% orang nyerah di percobaan pertama.
IMPORTHTML narik tabel atau list dari halaman web ke Google Sheets. IMPORTXML narik elemen apa pun dari halaman lewat XPath, bisa harga, judul, link, atau teks di dalam tag tertentu.
Bedanya gampang diinget:
| IMPORTHTML | IMPORTXML | |
|---|---|---|
| Bisa ambil apa | Cuma tabel & list | Elemen apa pun |
| Susah nggak | Gampang | Perlu XPath |
| Kapan dipakai | Data udah berbentuk tabel | Data kesebar di halaman |
Aturan praktisnya: coba IMPORTHTML dulu. Kalau gagal, baru pindah ke IMPORTXML.
Sintaksnya:
=IMPORTHTML(url, "table", nomor)
Tiga isian:
Contoh, narik tabel dari halaman Wikipedia:
=IMPORTHTML("https://id.wikipedia.org/wiki/Daftar_provinsi_di_Indonesia", "table", 1)
Sekali Enter, seluruh tabel masuk ke sheet kamu.
Masalah paling sering: kamu nggak tau tabelnya nomor berapa. Halaman bisa punya 8 tabel, dan yang kamu mau ada di urutan ke-4.
Caranya nyari: coba nomor 1, kalau salah ganti 2, terus sampai ketemu. Atau bikin 5 rumus sekaligus di 5 sheet berbeda, lihat mana yang bener.
Sintaksnya:
=IMPORTXML(url, xpath)
XPath itu alamat elemen di dalam halaman HTML. Kedengeran serem, tapi yang kepakai sehari-hari cuma sedikit.
| Mau ambil | XPath |
|---|---|
| Semua judul H2 | //h2 |
| Semua link | //a/@href |
| Teks di dalam class tertentu | //*[@class='harga'] |
| Teks di dalam id tertentu | //*[@id='total'] |
| Judul halaman | //title |
| Semua paragraf | //p |
| Elemen di dalam elemen | //div[@class='produk']//span |
Contoh nyata, narik semua judul artikel dari halaman blog:
=IMPORTXML("https://contoh.com/blog", "//h2[@class='judul-artikel']")
Atau narik semua link-nya sekalian:
=IMPORTXML("https://contoh.com/blog", "//h2[@class='judul-artikel']/a/@href")
Peringatan: XPath hasil Copy XPath biasanya panjang dan rapuh, kayak /html/body/div[3]/div[2]/ul/li[1]. Begitu situsnya ganti layout, rumus kamu mati. Lebih aman pakai class atau id.
Toko_berkah, UMKM retail 3 cabang di dataset ngulikdata, punya masalah klasik: harga beli sembako dari supplier berubah-ubah, dan pemiliknya baru sadar margin tipis pas bulanan udah lewat.
Dulu caranya: staf buka situs harga pangan tiap pagi, catat manual di buku. Butuh sekitar 15 menit sehari, dan sering keloncat pas lagi ramai.
Sekarang pakai satu rumus:
=IMPORTHTML("https://www.bi.go.id/hargapangan", "table", 1)
Ditambah kolom pembanding harga jual toko:
=ARRAYFORMULA(IF(B2:B="", "", ROUND((C2:C - B2:B) / C2:C * 100, 1)))
Hasilnya di kolom margin persen, update otomatis tiap jam.
Angka yang ketemu setelah 3 bulan jalan:
Yang bikin kaget bukan angkanya, tapi lamanya nggak ketahuan. Tiga bulan margin nyusut pelan-pelan, dan nggak ada yang nyadar karena omzetnya keliatan tetap naik.
Satu rumus IMPORTHTML ganti 15 menit kerja manual per hari, dan nemuin kebocoran Rp11,6 juta sebulan.
Ini bagian yang bikin orang nyerah. Ada 4 penyebab utama.
Ini penyebab nomor satu. Google Sheets cuma baca HTML mentah yang dikirim server. Kalau isinya baru muncul setelah JavaScript jalan, Sheets nggak lihat apa-apa.
Cara ceknya: buka halamannya, klik kanan → View Page Source (bukan Inspect). Cari teks yang kamu mau pakai Ctrl+F. Kalau nggak ketemu di situ, IMPORTXML nggak bakal bisa.
Solusinya: cari halaman lain, atau pakai Apps Script dengan API kalau situsnya nyediain.
Tes dulu XPath-nya di Chrome. Buka Console (F12), ketik:
$x("//h2[@class='judul']")
Kalau balikannya array kosong, XPath kamu salah.
Beberapa situs nolak permintaan dari server Google. Nggak ada workaround-nya di Sheets. Kamu harus pakai tool lain.
XPath sering ngandung tanda kutip. Kalau XPath-nya pakai kutip ganda dan rumusnya juga, rumusnya rusak.
Solusi: pakai kutip tunggal di dalam XPath.
Salah: =IMPORTXML(A1, "//div[@class="harga"]")
Bener: =IMPORTXML(A1, "//div[@class='harga']")
Numpuk 50 rumus IMPORT di satu file. Spreadsheet kamu bakal lemot dan sering nyangkut di status "Loading...". Kalau butuh banyak halaman, pakai Apps Script yang nyimpen hasilnya ke sel biasa.
Lupa bungkus pakai IFERROR. Situs down sebentar, sheet kamu penuh #N/A dan chart-nya rusak. Bungkus: =IFERROR(IMPORTHTML(...), "Gagal ambil data").
Nge-scrape halaman yang butuh login. Nggak bisa. Google Sheets nggak bawa cookie kamu.
Nggak nyimpen salinan datanya. Kalau situsnya ganti layout, rumus mati dan data historis kamu ikut ilang. Copy-paste-special (values only) ke sheet arsip tiap bulan.
Ngambil data pribadi orang. Jangan. Cek robots.txt dan Terms of Service situs sebelum scraping. Detail fungsinya bisa kamu baca di dokumentasi resmi Google Sheets.
IMPORTHTML cuma bisa ngambil tabel dan list, sintaksnya gampang, cukup URL dan nomor tabel. IMPORTXML bisa ngambil elemen apa pun (harga, judul, link) tapi kamu harus nulis XPath. Pakai IMPORTHTML kalau datanya udah berbentuk tabel rapi.
Penyebab paling sering: halamannya dimuat pakai JavaScript. Google Sheets cuma baca HTML mentah, jadi isi yang muncul setelah script jalan nggak kebaca. Cek pakai View Page Source, bukan Inspect Element.
Google Sheets nge-refresh kira-kira tiap sejam sekali otomatis. Kamu nggak bisa atur intervalnya lewat setting biasa. Kalau butuh lebih cepat, pakai Apps Script yang jalan sesuai jadwal.
Tergantung situs dan datanya. Ambil data publik yang nggak dilindungi login, dan cek robots.txt sama Terms of Service. Jangan pernah scraping data pribadi orang. Buat data pemerintah kayak BPS, biasanya boleh karena emang disediain buat publik.
Google nggak nyebut angka pastinya. Dari yang aku coba, di atas sekitar 50 rumus IMPORT dalam satu file, spreadsheet mulai lemot dan sering nyangkut di status Loading. Buat banyak halaman, pakai Apps Script.
Buka satu halaman yang datanya kamu copy-paste rutin, terus ganti pakai IMPORTHTML. Lima menit, dan kerjaan mingguan kamu hilang.
Habis narik datanya, rapiin pakai fungsi QUERY atau ARRAYFORMULA, kombinasi ini yang bikin sheet kamu jalan sendiri tanpa disentuh.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Cara pakai rumus FV dan PV Excel buat hitung nilai uang di masa depan dan sekarang. Lengkap dengan contoh tabungan dan target modal UMKM.
Investasi kelihatan untung di atas kertas, tapi nilai uang berubah tiap tahun. NPV dan IRR Excel bantu kamu nilai apakah proyek beneran layak, bukan cuma kelihatan untung.
Sebelum ambil pinjaman, kamu bisa hitung sendiri cicilan bulanannya pakai satu rumus. Ini cara PMT Excel bekerja, lengkap dengan contoh modal usaha dan jebakan bunga tahunan.