PROMPT
Pengembangan Arsitektur MPA Google Apps Script
"Buatkan struktur aplikasi MPA (Multi-Page Application) berbasis Google Apps Script dengan spesifikasi berikut:
Backend (Code.gs):
Gunakan fungsi
doGet(e)sebagai router yang mengambil parameter?page=.Sertakan variabel
rootUrl(dariScriptApp.getService().getUrl()) ke dalam objek template agar navigasi antar halaman sinkron.Buat fungsi
include(filename, rootUrl)yang menggunakancreateTemplateFromFiledanevaluate()agar file HTML yang dipanggil (seperti Navbar) dapat memproses scriptlet server-side.
Frontend (HTML Files):
Navbar.html: Buat komponen navigasi yang menggunakan variabel
rootUrluntuk link (Contoh:href="<?= rootUrl ?>?page=Home"). Wajib menggunakan atributtarget="_top"pada semua link navigasi.Index.html & About.html: Halaman konten yang memanggil Navbar menggunakan
<?!= include('Navbar', rootUrl); ?>.Gunakan Bootstrap 5 via CDN untuk styling modern dan pastikan setiap halaman memiliki tag
<base target="_top">.
Tujuan:
Menghindari error 'Maaf saat ini tidak bisa membuka file' akibat link yang tidak terevaluasi.
Memastikan navigasi antar halaman memicu reload penuh (MPA) melalui URL parameters."
Code.gs
Index.html
Navbar.html
About.html
Kesimpulan Aktivitas Pengembangan MPA
1. Arsitektur Routing (Backend)
Kita menggunakan satu fungsi
doGet(e)sebagai router tunggal yang menangkap parameter URL?page=.Sistem secara otomatis merender file HTML yang sesuai berdasarkan nama yang diberikan pada parameter tersebut (default ke
Index).
2. Solusi Masalah "Maaf, tidak bisa membuka file"
Penyebab: Kode
<?= ScriptApp.getService().getUrl(); ?>tidak dieksekusi di sisi server karena file HTML dipanggil sebagai teks mentah (getContent), sehingga link navigasi menjadi rusak/teks mentah.Solusi: Memperbarui fungsi
include()agar menggunakanHtmlService.createTemplateFromFile(filename).evaluate().getContent(). Hal ini memastikan kode server-side (<? ?>) di dalam komponen (seperti Navbar) diproses terlebih dahulu sebelum digabungkan ke halaman utama.
3. Komponen Navigasi & Link
Variabel
rootUrl: Kita menerapkan metode variable passing di mana URL Web App dikirim dariCode.gske template utama, lalu diteruskan ke fungsiinclude.Atribut
target="_top": Wajib digunakan pada setiap tag<a>untuk memaksa browser keluar dari sandbox iframe Google Apps Script dan memuat ulang halaman dengan parameter baru.
4. Struktur File yang Terorganisir
Memisahkan logika backend (
Code.gs), komponen yang dapat digunakan kembali (Navbar.html), dan halaman konten (Index.html,About.html).
Ringkasan Komponen Kode Akhir
| Komponen | Peran Utama |
| Code.gs | Mengelola routing, fungsi include dinamis, dan akses ke Spreadsheet. |
| include(file, rootUrl) | Memproses scriptlet di dalam file komponen agar link tidak error. |
| Navbar.html | Berisi link navigasi menggunakan <?= rootUrl ?>?page=NamaHalaman. |
| target="_top" | Memastikan navigasi berfungsi tanpa terblokir oleh kebijakan keamanan Google. |

Tidak ada komentar:
Posting Komentar