Hubungkan Kas ke Google Sheets

← Kembali ke Kas

Update koneksi yang sudah terpasang · v3-bootstrap

Sudah masuk ke Kas? Lewati aktivasi dan jangan ganti kunci atau URL. Buka Code.gs v3-bootstrap lengkap, salin seluruh isinya untuk mengganti Code.gs pada proyek Apps Script yang sama, lalu Simpan.

Deploy → Manage deployments → pilih deployment aktif → Edit (pensil) → Version: New version → Deploy. Menyimpan kode saja tidak memperbarui Web App. Pertahankan layanan Sheets v4, KAS_SECRET, URL /exec, dan tab _KAS_RECEIPTS.

Kembali ke Kas, pilih NOVEMBER → Muat ulang. Di bagian Mulai pencatatan NOVEMBER APP, periksa tiga saldo lalu tekan Buat NOVEMBER APP dan konfirmasi. Aplikasi membuat hanya tab baru dan beralih ke sana sesudah konfirmasi Google. NOVEMBER asli tidak diubah. Jika koneksi putus, tekan Cek / ulangi permintaan yang sama; jangan membuat permintaan pengganti. Hentikan edit manual sumber selama pemeriksaan/pembuatan.

Yang sudah tersedia

Website dan kode integrasi siap. Google belum terhubung sampai pemasangan dan uji baca berhasil. Tidak ada saldo contoh. Sheet tetap pribadi; staf tidak perlu akun Google atau akses spreadsheet.

Untuk iPhone: buka Safari, tekan menu halaman aA / pengaturan halaman → Minta Situs Web Desktop saat membuka editor Apps Script. Putar layar mendatar bila tombol tersembunyi.

1. Aktifkan akun Win secara pribadi

Pemilik VPS menjalankan perintah ini sendiri melalui terminal SSH pribadi. Jangan jalankan melalui chat/agent, rekaman sesi, atau log. Kata sandi dimasukkan tersembunyi, bukan pada perintah.

sudo -u kas-app /opt/kas-app/.venv/bin/python /opt/kas-app/owner_setup.py

Aktivasi lokal menggunakan undangan internal sekali pakai, kedaluwarsa 15 menit. Setelah berhasil, masuk ke Kas dengan dmnpts@gmail.com dan kata sandi pilihan sendiri. Tidak ada klaim admin di website umum.

2. Salin kode lengkap

Buka Code.gs lengkap di tab Safari baru. Pilih semua → Salin. Di script.google.com, buka proyek kas. Ganti isi file Code.gs yang sebelumnya hanya checker dengan kode lengkap ini. Simpan. Pastikan tidak ada fungsi doPost/doGet lain dengan nama sama. Tidak perlu menyalin kata sandi atau kunci ke kode.

3. Tambahkan Google Sheets API

Di kiri editor: Services / Layanan → + → Google Sheets API → Add / Tambahkan. Gunakan identifier Sheets, versi v4. Jika memakai proyek Google Cloud khusus, aktifkan juga Google Sheets API pada proyek tersebut.

4. Pasang kunci rahasia

Di Kas, masuk sebagai Win → Hubungkan Google Sheets → Buat & salin kunci acak. Biarkan kolom kunci tetap terisi. Di editor Apps Script: Project Settings / Setelan proyek → Script Properties / Properti skrip → Add script property. Nama: KAS_SECRET. Nilai: tempel kunci dari Kas. Simpan. Jangan kirim kunci ke chat/grup atau memasukkannya ke source code.

5. Jalankan instalasi satu kali

Di editor, pilih fungsi installKas pada dropdown atas → Run / Jalankan. Setujui akses menggunakan akun Google yang memang boleh mengedit spreadsheet. Hanya lanjutkan jika kode yang ditinjau adalah kode Kas ini.

Fungsi ini menambahkan satu tab internal tersembunyi _KAS_RECEIPTS untuk bukti transaksi/idempotensi. Tidak mengubah NOVEMBER, baris lama, formula, atau JADWAL SHIFT. Hasil yang diharapkan: eksekusi selesai tanpa error; tidak ada rahasia yang dicetak. Jangan hapus atau edit tab internal tersebut.

6. Deploy sebagai Web App

Deploy → New deployment → ikon roda gigi → Web app. Execute as: Me / Saya. Who has access: Anyone / Siapa saja. Klik Deploy, izinkan akses bila diminta, lalu salin URL berakhiran /exec, bukan /dev.

Alamat dapat dihubungi server Kas, tetapi setiap aksi baca/tulis memerlukan tanda tangan HMAC rahasia, waktu valid, dan nonce sekali pakai. Orang tanpa kunci tidak dapat membaca atau menulis melalui endpoint. Spreadsheet tidak dipublikasikan. Jika kebijakan Workspace tidak mengizinkan Anyone, jangan mengubah keamanan organisasi: koneksi tetap terkunci sampai metode deployment disetujui.

7. Hubungkan dan uji baca

Kembali ke Kas → tempel URL /exec, pastikan kunci masih sama → Simpan koneksi → Muat ulang. Sukses berarti banner Terhubung · data asli Google Sheets, daftar tab, dan saldo hasil pembacaan Google muncul. Menyimpan URL saja bukan bukti koneksi.

Admin dapat melihat semua tab. Tab nonkas seperti JADWAL SHIFT tetap hanya baca. Jika muncul peringatan header/saldo/formula, penulisan dikunci. Formula lama tidak diperbaiki otomatis. Minta pemeriksaan sebelum mengubah mapping atau formula.

Sesudah koneksi

  1. Win membuat undangan Erik, Rio, dan Vincent dari menu Aktivasi staf.
  2. Kirim setiap tautan langsung kepada staf yang benar; berlaku satu jam, sekali pakai. Staf memilih kata sandi sendiri.
  3. Baca saldo terlebih dahulu. Untuk uji tulis, gunakan tab periode uji yang sengaja dibuat admin; jangan memasukkan transaksi contoh ke NOVEMBER.
  4. Jangan mengedit Google Sheet secara manual bersamaan dengan transaksi aplikasi. ScriptLock hanya mengunci eksekusi aplikasi, bukan editor manusia. Jika perlu edit manual, hentikan input aplikasi dan verifikasi saldo sesudahnya.
  5. Jika koneksi putus setelah Simpan, gunakan Cek / ulangi permintaan yang sama. Permintaan belum pasti dipulihkan setelah login/muat ulang; jangan membuat transaksi pengganti.
  6. Setiap perubahan kode Google: Deploy → Manage deployments → Edit → New version → Deploy.

Saldo awal periode baru selalu snapshot dari penutupan sumber. Tidak ada editor saldo awal lama, penghapusan transaksi, atau perbaikan formula otomatis; perubahan finansial lama memerlukan peninjauan terpisah.