Lisensi Google Apps Script Spreadsheet

Lisensi Google Apps Script pada Spreadsheet

Buat Lisensi Google Apps Script pada Spreadsheet

A. Pengantar

Kosong

B. Keterangan Code.gs, index.html, dan

Kosong

C. Kosong

Kosong

D. Kosong

Kosong

E. Kosong

Kosong

F. Kosong

Kosong

G. Kosong

Kosong

H. Kosong

Kosong

I. Kosong

Kosong

J. Kosong

Kosong

K. Kosong

Kosong

L. Kosong

Kosong

M-R. Spreadsheet Lisensi

✅ 1. Membuat Spreadsheet Manual
Digunakan untuk menyimpan daftar lisensi atau email pengguna.

๐Ÿ”น Langkah-langkah:

  1. Buka Google Sheets → Spreadsheet kosong baru akan terbuka.
  2. Pada kolom A1, ketik Email.
  3. Masukkan email pengguna mulai dari A2 ke bawah. Contoh:
    pengguna1@gmail.com
    pengguna2@gmail.com
  4. Klik kanan pada tab sheet (nama default Sheet1) → pilih Rename → ubah nama menjadi Lisensi.

✅ 2. Cara Menemukan SPREADSHEET_ID

๐Ÿ”น Langkah-langkah:

  1. Simpan spreadsheet yang sudah dibuat.
  2. Lihat URL pada browser. Contoh:
    https://docs.google.com/spreadsheets/d/1w8M8H9XeWqAAzEoIl82gVJd9uWLvCxMcC3XvGyHv6sE/edit#gid=0
  3. Bagian yang ditebalkan adalah SPREADSHEET_ID. Salin ID tersebut.
  4. Masukkan ke dalam Code.gs seperti ini:
    const sheet = SpreadsheetApp.openById('1w8M8H9XeWqAAzEoIl82gVJd9uWLvCxMcC3XvGyHv6sE').getSheetByName('Lisensi');
N. Keuntungan Satu atau Dua Spreadsheet

๐Ÿ”ธ Opsi 1: SATU Spreadsheet

Pada opsi ini, kamu menyimpan semua data (data pengguna, data lisensi, log, dll) dalam satu file spreadsheet. Apps Script juga langsung melekat di dalam file yang sama.

  • Apps Script diakses melalui menu Extensions > Apps Script.
  • SPREADSHEET_ID cukup satu, dan kamu bisa akses sheet lain seperti: Sheet Data, Sheet Lisensi, Sheet Log, dll.

๐Ÿ“Œ Keuntungan:

  • ✅ Praktis — semua terpusat dalam satu file.
  • ✅ Tidak perlu atur izin antar-spreadsheet.

๐Ÿ”ธ Opsi 2: DUA Spreadsheet

Dalam pendekatan ini, kamu memisahkan spreadsheet proyek (berisi data yang digunakan user) dan spreadsheet lisensi (berisi daftar email pengguna yang sah). Apps Script bisa melekat di salah satu — biasanya di spreadsheet utama.

  • Spreadsheet A: Untuk data proyek (laporan, input, dsb).
  • Spreadsheet B: Untuk lisensi — hanya developer yang punya akses.
  • Apps Script menggunakan SpreadsheetApp.openById() untuk mengakses Spreadsheet B dari server-side.

๐Ÿ“Œ Keuntungan:

  • ✅ Lisensi lebih aman dan terpisah dari user.
  • ✅ User tidak bisa melihat, menyalin, atau mengubah daftar lisensi.
  • ✅ Spreadsheet lisensi bisa digunakan ulang untuk proyek lain.
O. Keamanan Akses File Script

๐Ÿšซ Jangan bagikan file Apps Script ke siapa pun!

  • Di Google Drive, pastikan file proyek Apps Script tidak dibagikan ke publik atau pengguna lain.
  • Jika Apps Script terikat ke spreadsheet (bound script), pastikan hanya spreadsheet-nya yang dibagikan — bukan script-nya.
  • Hindari memberikan akses editor pada Apps Script kecuali benar-benar diperlukan.

✅ Solusi Aman: Deploy sebagai Web App (server-side)

Dengan metode ini, pengguna hanya akan melihat tampilan HTML, tanpa akses ke kode di Code.gs.

function doGet() {
          return HtmlService.createHtmlOutputFromFile('main');
        }

๐Ÿ” Ingin keamanan lebih tinggi?

Gunakan sistem berikut untuk memastikan logika dan kontrol akses tetap aman:

  • Gunakan Apps Script standalone (berdiri sendiri) (tidak melekat di spreadsheet).
  • Deploy sebagai Web App dengan pengaturan "Execute as: Me (developer)".
  • Verifikasi lisensi menggunakan spreadsheet pribadi (yang hanya kamu akses).
  • HTML hanya menampilkan antarmuka pengguna (UI), bukan logika aplikasi.
P. Perlindungan Google Apps Script

๐Ÿ’ก Detail Perlindungan Google Apps Script

Berikut adalah skenario umum terkait keamanan dan aksesibilitas kode Apps Script dalam berbagai bentuk distribusi. Gunakan pendekatan yang sesuai agar script penting dan rahasia tetap terlindungi:

Skenario Bisa Lihat Script? Bisa Edit? Aman?
Kamu deploy sebagai Web App (akses saja) ❌ Tidak ❌ Tidak ✅ Ya
Kamu bagikan Spreadsheet, tapi tidak script-nya ❌ Tidak ❌ Tidak ✅ Ya
Kamu bagikan Apps Script sebagai Editor ✅ Bisa ✅ Bisa ❌ Tidak aman
Kamu publish sebagai add-on terbuka (publik) ✅ Bisa dilihat (via eksplorasi) ❌ Tidak bisa edit ⚠️ Tidak ideal untuk kode rahasia

Kesimpulan: Jika Anda ingin menyembunyikan logika aplikasi, gunakan Web App standalone (berdiri sendiri) dan pastikan pengguna hanya mengakses antarmuka tanpa akses editor atau eksplorasi kode.

Q. Keamanan Tingkat Lanjut

๐Ÿ” Ingin keamanan lebih tinggi?

✅ Gunakan sistem berikut untuk meningkatkan keamanan aplikasi yang dibangun dengan Google Apps Script:

  • Gunakan Apps Script standalone (berdiri sendiri) (terpisah dari spreadsheet pengguna).
  • Deploy sebagai Web App dengan pengaturan "Execute as: Me (developer)".
  • Lisensi dicek dari Spreadsheet pribadi yang hanya bisa diakses oleh developer.
  • HTML hanya untuk tampilan (UI), logika penting tetap di-backend (Code.gs).

๐ŸŽฏ Kesimpulan: Apa yang bisa dilihat/diedit oleh pengguna?

Hal Bisa Dilihat/Diedit Pengguna?
Code.gs di Web App ❌ Tidak bisa
HTML via HtmlService ⚠️ Bisa dilihat di browser (gunakan dengan hati-hati)
Spreadsheet Lisensi ❌ Tidak bisa jika tidak dibagikan
Apps Script Project ❌ Tidak bisa jika tidak dibagikan
R. Spreadsheet Lisensi

๐Ÿ” Struktur Lisensi Aman

๐Ÿ“„ Spreadsheet Lisensi adalah file pusat yang berisi daftar email pengguna yang diizinkan untuk menggunakan aplikasi. File ini bersifat privat dan hanya diakses oleh Apps Script dari sisi server.

  • Contoh isi spreadsheet:
    user1@gmail.com
    user2@domain.com
  • Tidak perlu dibagikan ke siapa pun.
  • Hanya kamu (developer) yang memiliki akses ke file ini.
  • Digunakan untuk verifikasi lisensi saat user mengakses aplikasi.

Tips Teknis: Simpan Spreadsheet Lisensi di Google Drive kamu dengan nama yang jelas dan catat spreadsheetId-nya untuk digunakan dalam Apps Script (lihat bagian "S. Apps Script").


๐Ÿ“Œ Tambahan: Keamanan Spreadsheet Lisensi

  • Harus terpisah dari spreadsheet proyek/user.
  • Berfungsi sebagai pusat validasi lisensi secara server-side.
  • Tidak dapat diakses oleh pengguna akhir — tidak bisa dilihat, disalin, atau dimodifikasi.
  • Hanya Apps Script milik developer yang bisa membacanya via openById().

Cara Atur Akses Spreadsheet Lisensi:

  1. Buka spreadsheet lisensi (yang berisi daftar email).
  2. Klik tombol "Bagikan / Share" di kanan atas.
  3. Pastikan hanya kamu yang memiliki akses.
  4. Jangan bagikan ke siapa pun, bahkan sebagai viewer/editor.

Kenapa Apps Script tetap bisa membacanya?

  • Karena script kamu adalah pemilik spreadsheet tersebut.
  • openById() bekerja dari sisi server, bukan tergantung akses pengguna.

๐Ÿงช Studi Kasus:

  • Spreadsheet A: Proyek utama, dipakai user, berisi UI dan data input/output.
  • Spreadsheet B: Lisensi, hanya developer yang punya akses.

Saat user membuka Web App:

  • ✅ Mereka bisa pakai Spreadsheet A.
  • ❌ Mereka tidak bisa melihat Spreadsheet B.
  • ✅ Tapi Apps Script tetap bisa membaca Spreadsheet B dan melakukan verifikasi.
S. Apps Script (dalam Spreadsheet User)

Di dalam Code.gs pada Google Apps Script, Anda bisa membuat fungsi untuk memeriksa apakah email pengguna yang membuka aplikasi termasuk dalam daftar lisensi. Ini berguna untuk membatasi akses hanya kepada pengguna tertentu berdasarkan alamat email yang tersimpan di spreadsheet lisensi.

Contoh fungsi:

function cekLisensi() {
          const sheet = SpreadsheetApp.openById('SPREADSHEET_ID_LISENSI(B)').getSheetByName('Lisensi');
          const email = Session.getActiveUser().getEmail();
          const daftar = sheet.getRange(2, 1, sheet.getLastRow() - 1).getValues().flat();
          return daftar.includes(email);
        }

Penjelasan fungsi:

  • SpreadsheetApp.openById(...): Membuka spreadsheet secara eksplisit berdasarkan ID-nya. Jika kamu meng-host Apps Script sebagai Web App, metode ini lebih aman dibanding getActiveSpreadsheet() karena tidak bergantung pada spreadsheet mana yang sedang dibuka oleh pengguna. Dengan openById(), script selalu mengakses file yang kamu tentukan sendiri, sehingga validasi dan logika tetap berjalan meskipun pengguna membuka spreadsheet berbeda.
  • getSheetByName('Lisensi'): Mengakses sheet bernama "Lisensi".
  • Session.getActiveUser().getEmail(): Mengambil email pengguna yang sedang membuka aplikasi.
  • getRange(...).getValues().flat(): Mengambil seluruh data email dari kolom A mulai dari baris ke-2, lalu diratakan menjadi array 1 dimensi.
  • daftar.includes(email): Memeriksa apakah email pengguna termasuk dalam daftar email yang diizinkan.

Catatan penting: Pastikan spreadsheet lisensi dapat diakses oleh Apps Script dan email pengguna bisa dikenali. Untuk itu, gunakan akun Google Workspace jika ingin memastikan email pengguna terbaca melalui Session.getActiveUser().

T. Spreadsheet Proyek (yang digunakan user/pengguna)

๐Ÿ“‚ Spreadsheet Proyek adalah spreadsheet yang digunakan langsung oleh pengguna akhir (user). File ini bisa kamu bagikan ke pengguna yang telah memiliki lisensi.

  • Boleh dan bisa dibagikan ke user (pengguna).
  • Berisi antarmuka pengguna (UI) seperti menu, tombol, dan formulir berbasis HTML yang dikendalikan dengan Apps Script.
  • Digunakan untuk input dan output data (misalnya: formulir isian, tabel, grafik, dll).
  • Tidak menyimpan daftar lisensi. Lisensi diverifikasi lewat koneksi ke Spreadsheet Lisensi yang aman (pusat), bukan disimpan lokal di sini.

๐Ÿ” Catatan: Meskipun spreadsheet ini dapat diakses dan dimodifikasi oleh user, validasi lisensi tetap dilakukan melalui server (Apps Script), sehingga keamanan kontrol akses tetap terjaga.

Tambahan:

U. Tabel: Spreadsheet Lisensi, Apps Script (dalam spreadsheet user), Spreadsheet Proyek (user?)

Komponen Siapa Bisa Akses? Fungsi
Spreadsheet Lisensi Hanya developer Daftar email berlisensi
Apps Script (dalam spreadsheet user) Bisa dilihat UI-nya saja Mengecek lisensi via server
Spreadsheet Proyek Dibagikan ke pengguna Tempat aplikasi digunakan
V. ๐Ÿ’ก Developer = Pusat Kontrol

    Sebagai developer:
  • Kamu menyimpan spreadsheet lisensi pribadi
  • Kamu menulis script yang hanya berjalan jika email pengguna valid
  • Kamu bisa menambahkan fitur seperti: a) Masa berlaku lisensi b) Aktivasi satu kali per user c) Blokir pengguna tertentu
W. Keamanan Tambahan

    Keamanan Tambahan
  • Session.getActiveUser().getEmail() hanya berfungsi jika kamu deploy Web App sebagai "user yang mengakses" atau "developer sendiri", tergantung kebutuhan.
  • Spreadsheet lisensi tidak pernah terlihat oleh pengguna, karena diakses server-side via openById().
X. Kalau kamu setuju, saya bisa bantu kamu:

    W:
    X:
    Y:
  • Strukturkan proyek full aman (kode server-side saja)
  • Proteksi HTML & script klien
  • Tambahkan sistem aktivasi berbasis Google Sheets yang hanya bisa dipakai oleh pemilik lisensi
    Z:
  • Buat file LICENSE.txt
  • Tambah fungsi cekLisensi()
  • Buat sistem aktivasi lisensi lengkap. Mau disertakan sistem kadaluarsa / expired / masa berlaku lisensi juga? Otomatiskan pengecekan lisensi dari Sheets. Tambahkan kunci akses berdasarkan lisensi. Cek nama user juga. Kirim email otomatis kalau tidak berlisensi.
  • Tambahkan watermark di UI HTML
  • Siap saya bantu bangun strukturnya? Mau mulai dari template dasar dulu?

Y. Meta Description

Kosong

Z. Meta Keyword

Kosong

Comments

Popular posts from this blog

Vault Frontend 2 V5

Atur Jarak Antar Elemen HTML