Membuat bot Telegram yang terintegrasi dengan Google Sheets untuk pencatatan keuangan adalah langkah yang sangat cerdas. Anda bisa mencatat pengeluaran/pemasukan langsung lewat chat, dan bot akan otomatis mengisinya ke pembukuan Anda.
Berikut adalah panduan step-by-step lengkap, mulai dari persiapan hingga kodingannya. Kita akan menggunakan Google Apps Script (gratis dan tidak perlu hosting tambahan).
Step 1: Siapkan Google Sheets
- Buat Spreadsheet baru di Google Drive Anda.
- Beri nama sheet pertama dengan nama
Transaksi - Buatlah header di baris pertama dengan kolom berikut:
- A1:
Tanggal - B1:
Jenis(Pemasukan/Pengeluaran) - C1:
Nominal - D1:
Keterangan
- A1:
💡 PENTING: Salin ID Spreadsheet Anda. ID ini ada di URL browser Anda:https://docs.google.com/spreadsheets/d/[ID_SPREADSHEET_ANDA]/edit
Step 2: Buat Bot Telegram via BotFather
- Buka aplikasi Telegram, cari
@BotFather. - Kirim perintah
/newbot. - Masukkan nama bot Anda (bebas, contoh:
Catatan Keuangan Bot). - Masukkan username bot (harus diakhiri dengan kata 'bot', contoh:
keuangan_pribadi_bot). BotFatherakan memberikan HTTP API Token. Simpan token ini.
Step 3: Tulis Kodingan di Google Apps Script
- Di Google Sheets Anda, klik menu Ekstensi (Extensions) > Apps Script.
- Hapus semua kode bawaan yang ada di editor, lalu copy-paste kode di bawah ini:
// Ganti dengan Token Bot Telegram Anda
const TOKEN = "ISI_TOKEN_TELEGRAM_ANDA_DI_SINI";
// Ganti dengan ID Google Sheet Anda
const SPREADSHEET_ID = "ISI_ID_SPREADSHEET_ANDA_DI_SINI";
function doPost(e) {
try {
const data = JSON.parse(e.postData.contents);
const chatId = data.message.chat.id;
const text = data.message.text;
const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName("Transaksi");
// Perintah /start
if (text === "/start") {
const welcomeMsg = "Halo! Saya Bot Pencatat Keuangan. \n\n" +
"**Format Mencatat:**\n" +
"Format: `[Jenis] [Nominal] [Keterangan]`\n" +
"Contoh: `Pengeluaran 50000 Makan Siang`\n" +
"Contoh: `Pemasukan 1500000 Gaji`\n\n" +
"**Melihat Laporan:**\n" +
"Ketik `/laporan` untuk melihat total bulan ini.";
sendText(chatId, welcomeMsg);
return;
}
// Perintah /laporan
if (text === "/laporan") {
const laporan = hitungLaporan(sheet);
sendText(chatId, laporan);
return;
}
// Proses Pencatatan (Parsing teks)
// Memisah teks berdasarkan spasi
const parts = text.split(" ");
if (parts.length >= 3) {
const jenisInput = parts[0].toLowerCase();
const nominal = parseFloat(parts[1]);
const keterangan = parts.slice(2).join(" "); // Menggabungkan sisa teks jika keterangan lebih dari 1 kata
let jenis = "";
if (jenisInput === "pemasukan" || jenisInput === "masuk") {
jenis = "Pemasukan";
} else if (jenisInput === "pengeluaran" || jenisInput === "keluar") {
jenis = "Pengeluaran";
}
// Validasi input
if (jenis && !isNaN(nominal)) {
const waktuSekarang = new Date();
// Input ke Google Sheets [Tanggal, Jenis, Nominal, Keterangan]
sheet.appendRow([waktuSekarang, jenis, nominal, keterangan]);
sendText(chatId, `✅ **Berhasil dicatat!**\n📅 ${waktuSekarang.toLocaleDateString('id-ID')}\n🔹 ${jenis}: Rp ${nominal.toLocaleString('id-ID')}\n📝 Keterangan: ${keterangan}`);
} else {
sendText(chatId, "❌ Format salah atau nominal bukan angka. Contoh: `Pengeluaran 50000 Makan`");
}
} else {
sendText(chatId, "❓ Perintah tidak dikenali. Gunakan format: `Pengeluaran 50000 Makan` atau ketik `/laporan` untuk ringkasan.");
}
} catch (error) {
// Jika ada error tidak membuat bot crash
Logger.log(error.toString());
}
}
// Fungsi untuk mengirim pesan ke Telegram
function sendText(chatId, text) {
const url = "https://api.telegram.org/bot" + TOKEN + "/sendMessage";
const payload = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify({
"chat_id": chatId,
"text": text,
"parse_mode": "Markdown"
})
};
UrlFetchApp.fetch(url, payload);
}
// Fungsi untuk menghitung laporan bulanan
function hitungLaporan(sheet) {
const data = sheet.getDataRange().getValues();
const bulanSekarang = new Date().getMonth();
const tahunSekarang = new Date().getFullYear();
let totalPemasukan = 0;
let totalPengeluaran = 0;
// Looping data dari baris ke-2 (melewati header)
for (let i = 1; i < data.length; i++) {
const tgl = new Date(data[i][0]);
const jenis = data[i][1];
const nominal = data[i][2];
// Filter berdasarkan bulan dan tahun berjalan
if (tgl.getMonth() === bulanSekarang && tgl.getFullYear() === tahunSekarang) {
if (jenis === "Pemasukan") {
totalPemasukan += nominal;
} else if (jenis === "Pengeluaran") {
totalPengeluaran += nominal;
}
}
}
const saldo = totalPemasukan - totalPengeluaran;
const namaBulan = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"];
let ringkasan = `📊 **LAPORAN KEUANGAN (${namaBulan[bulanSekarang]} ${tahunSekarang})**\n\n` +
`🟢 Pemasukan: Rp ${totalPemasukan.toLocaleString('id-ID')}\n` +
`🔴 Pengeluaran: Rp ${totalPengeluaran.toLocaleString('id-ID')}\n` +
`──────────────────\n` +
`💰 **Sisa Saldo:** Rp ${saldo.toLocaleString('id-ID')}`;
return ringkasan;
}
- Ganti
"ISI_TOKEN_TELEGRAM_ANDA_DI_SINI"dengan token dari BotFather. - Ganti
"ISI_ID_SPREADSHEET_ANDA_DI_SINI"dengan ID Spreadsheet Anda. - Klik ikon Simpan (Save) (gambar disket).
Step 4: Deploy Kodingan sebagai Web App
Agar Telegram bisa mengirim data ke Google Sheets, kita harus mempublikasikan kode di atas.
- Di kanan atas halaman Apps Script, klik tombol Terapkan (Deploy) > Terapkan baru (New deployment).
- Klik ikon gear (Pilih jenis), lalu pilih Aplikasi web (Web app).
- Isikan deskripsi bebas (misal:
Versi 1). - Pada bagian Yang memiliki akses (Who has access), ubah menjadi Siapa saja (Anyone). (Ini krusial agar Telegram bisa mengaksesnya).
- Klik Terapkan (Deploy).
- Anda mungkin akan diminta memberikan izin (Authorize access). Pilih akun Google Anda, klik Advanced, lalu klik Go to Untitled project (unsafe), dan pilih Allow.
- Setelah berhasil, Anda akan mendapatkan URL Aplikasi Web (Web app URL). Salin URL tersebut.
Step 5: Hubungkan Web App Ke Telegram (Set Webhook)
Langkah terakhir adalah memberi tahu Telegram ke mana harus mengirim pesan. Kita perlu menembak URL Webhook.
Cara paling mudah, buka browser baru (Chrome/Firefox), lalu buka URL berikut setelah Anda sesuaikan:
https://api.telegram.org/bot[TOKEN_TELEGRAM_ANDA]/setWebhook?url=[URL_WEB_APP_ANDA]
Ganti [TOKEN_TELEGRAM_ANDA]
dan [URL_WEB_APP_ANDA] dengan data yang sudah Anda simpan sebelumnya.
Contoh URL yang benar: https://api.telegram.org/bot123456:ABCdefGhI/setWebhook?url=https://script.google.com/macros/s/XYZ123/exec
Jika sukses, di layar browser akan muncul teks:
{"ok":true,"result":true,"description":"Webhook was set"}🚀 Cara Penggunaan & Pengujian
Sekarang buka bot Telegram Anda dan klik /start.
1. Cara Mencatat Transaksi
Kirim pesan dengan format: [Jenis] [Nominal] [Keterangan] (dipisahkan spasi).
- Contoh Pemasukan:
Pemasukan 2000000 Gaji Bulanan
- Contoh Pengeluaran:
Pengeluaran 45000 Beli Kopi dan Cemilan
Bot akan otomatis membalas dengan centang hijau (✅ Berhasil dicatat!), dan data langsung masuk ke Google Sheets secara real-time.
2. Cara Menerima Laporan
Cukup ketik perintah ini di chat bot:
/laporan
Bot akan membaca data di Google Sheets, menyaring transaksi yang terjadi di bulan ini saja, menghitung totalnya, dan mengirimkan ringkasannya (Pemasukan, Pengeluaran, dan Sisa Saldo) langsung ke Anda.

0 Komentar