Total Siswa Terdaftar
Mata Pelajaran
Bank Soal Aktif
Jadwal Ujian
Akses Cepat & Aksi Operasional Proktor
Gunakan menu navigasi di sebelah kiri atau tombol cepat di bawah untuk melakukan manajemen asesmen sekolah:
Database Jadwal Ujian (CRUD)
Siswa hanya dapat memulai ujian jika data kelas dan mata pelajaran sesuai jadwal yang aktif.
| No | Mata Pelajaran | Kelas | Tanggal | Batas Waktu | Aksi |
|---|---|---|---|---|---|
| 1 | Informatika | X TAB 2 | 2026-11-04 | ⏰ 11:15 s/d 13:30 |
|
| 2 | Pendidikan Agama Islam | X TBSM 1 | 2026-11-04 | ⏰ 14:10 s/d 15:15 |
|
| 3 | Produk Kreatif dan Kewirausahaan | XI DKV 3 | 2026-11-03 | ⏰ 12:30 s/d 14:10 |
|
Database Peserta Ujian (319 Siswa Resmi)
Validasi data peserta terdaftar untuk mencegah siswa luar mengikuti asesmen tanpa izin.
| No | Nama Lengkap Peserta | No. Absen | Kelas | Aksi |
|---|---|---|---|---|
| 1 |
A
AN NISA KUSUMA MELATI
No. Absen: 1
|
1 | X DKV 1 |
|
| 2 |
A
ANANDA MIFTAHULHUDA PRADANA
No. Absen: 2
|
2 | X DKV 1 |
|
| 3 |
A
ANGEL LISA BEARNANDA
No. Absen: 3
|
3 | X DKV 1 |
|
| 4 |
A
ARIF DAFFAA RIFQI PRATAMA
No. Absen: 4
|
4 | X DKV 1 |
|
| 5 |
A
ARZELA TASYA ALNASYIFA
No. Absen: 5
|
5 | X DKV 1 |
|
| 6 |
A
ATRESIA CANTIKA DEWI
No. Absen: 6
|
6 | X DKV 1 |
|
| 7 |
A
AULIA IBRAHIM
No. Absen: 7
|
7 | X DKV 1 |
|
| 8 |
A
AULIAH HAWA RAMADHANI
No. Absen: 8
|
8 | X DKV 1 |
|
| 9 |
A
AVRIZHA KEYZHA ARZELLA
No. Absen: 9
|
9 | X DKV 1 |
|
| 10 |
C
CALLISTA NINDIA PUTRI
No. Absen: 10
|
10 | X DKV 1 |
|
| 11 |
C
CHOLIS ALI NAZAM
No. Absen: 11
|
11 | X DKV 1 |
|
| 12 |
D
DINDA KEYLA WAHYUNINGTYAS
No. Absen: 12
|
12 | X DKV 1 |
|
| 13 |
D
DISVITA PUTRI ANDINI
No. Absen: 13
|
13 | X DKV 1 |
|
| 14 |
E
ELSA ESTU ROMA VELINA
No. Absen: 14
|
14 | X DKV 1 |
|
| 15 |
F
FEBRIAN TIRTA ASSIDDIQ
No. Absen: 15
|
15 | X DKV 1 |
|
Daftar Mata Pelajaran & Bank Soal
Kelola mata pelajaran dan butir soal masing-masing.
| No | Mata Pelajaran | Jumlah Soal | Aksi |
|---|---|---|---|
| 1 | Informatika | 50 Soal |
|
| 2 | Pendidikan Agama Islam | 50 Soal |
|
| 3 | Produk Kreatif dan Kewirausahaan | 50 Soal |
|
Sinkronisasi Soal Excel per Mata Pelajaran
Format Kolom: Kolom A=Pertanyaan, Kolom B-F=Opsi A-E, Kolom G=Jawaban Benar (A/B/C/D/E), Kolom H=Pembahasan Singkat (Opsional).
Total butir soal aktif pada mapel terpilih: 50 butir.
Identitas Ujian & Kode Akses Token
SOAL EVALUASI
MATERI BAB
Token Akses Siswa: 212Parameter Durasi, Pengacakan & Skala Nilai
Keamanan & Kata Sandi Guru / Proktor
Pengaturan Google Spreadsheet & Google Drive
Hasil evaluasi siswa otomatis tercatat ke Google Spreadsheet secara real-time atau disinkronkan saat terhubung internet.
Integrasi Spreadsheet Khusus per Kelas
Jika ingin hasil ujian kelas tertentu masuk ke spreadsheet terpisah.
| No | Kelas | URL Web App Apps Script | Aksi & Uji Coba |
|---|---|---|---|
| 1 | X DKV 3 | https://script.google.com/macros/s/AKfycbwn4IkV2SKg21i1-nWUVDFVSGcYRFkgKmlw3_Oy42jJSKJ5PMh-Ak_Yvz6_pENUF-CC/exec |
|
| 2 | X TAB 1 | https://script.google.com/macros/s/AKfycbym0vwAmK8Qynhttl1_hjaV5f9wHibddnZ4NDnT1gsk406GmvPCMBUZDwtxovEVU8Sz/exec |
|
| 3 | XI DKV 1 | https://script.google.com/macros/s/AKfycbzIUrTJPRkpA2l5RTHEgFoUXq8fsjRwL4W8iLwf3j0lo__nT6aHJAhvl9zt4p5yQW8/exec |
|
| 4 | X DKV 1 | https://script.google.com/macros/s/AKfycbzuQqEdy0tqXKIm1tAIRhm4AJ-4GFxA4J2fAFS0nNiMSEJtc9eRfiyqQjj_hsUv-2w/exec |
|
| 5 | X DKV 2 | https://script.google.com/macros/s/AKfycbxdrrz2rmHzvaUZdTUzFZoVZBkNlbyEKANTms6DwN1ltPL895FHF9RfICDJLiW_mWM1/exec |
|
| 6 | X TAB 2 | https://script.google.com/macros/s/AKfycbwfQe0-eahlXRumdphVV1Ki3cpGfjGjnkm0a7VYrUGVbBPtkP5kLoAMxv8ceNmJ-HJc/exec |
|
| 7 | X TBSM 1 | https://script.google.com/macros/s/AKfycbw6pBpZ1Nvswn887GnS_h0CM2guMCgpg4syOjDVwiML7f8mWakAGUtZrquMlnPSMdU/exec |
|
| 8 | X TBKR | https://script.google.com/macros/s/AKfycbx4yc70brgagFjNwkjGfK2EQbTGNaSAMiUxCZtGqcy3QEFfh0Y3ZPNWRQZUWo9tzIA/exec |
|
| 9 | XI DKV 3 | https://script.google.com/macros/s/AKfycbxFS_R2zsVyuxUxzIrYcsIiOP2K8eKTum_QNP4cILLFLPpXGw5sIE_EMCLc9BHhXrQ/exec |
|
Panduan Kode Google Apps Script (Auto-Header & Anti-Duplikasi)
Pasang kode ini pada menu Ekstensi > Apps Script di Google Spreadsheet Anda, lalu Deploy sebagai Web App (Siapa saja / Anyone).
function doPost(e) {
var lock = LockService.getScriptLock();
try {
lock.waitLock(15000); // Menunggu hingga 15 detik jika ada pengiriman bersamaan
var ss = SpreadsheetApp.getActiveSpreadsheet();
var timezone = "Asia/Jakarta";
try {
timezone = ss.getSpreadsheetTimeZone() || timezone;
} catch (tzErr) {}
// 1. Deteksi tanggal hari ini (format 'DD-MM-YYYY', contoh: 04-11-2026)
var todayStr = Utilities.formatDate(new Date(), timezone, "dd-MM-yyyy");
// 2. Cek apakah sheet dengan nama tanggal tersebut sudah ada
var sheet = ss.getSheetByName(todayStr);
// 3. Jika belum ada, buat sheet baru dengan nama tanggal tersebut
if (!sheet) {
sheet = ss.insertSheet(todayStr);
}
// 4. Jika sheet masih baru (baris kosong), otomatis buat baris Header
if (sheet.getLastRow() == 0) {
sheet.appendRow([
"Timestamp",
"Nama Lengkap",
"Nomor Absen",
"Kelas",
"Mata Pelajaran",
"Nilai Ujian",
"Nilai Maksimal",
"KKM",
"Status Kelulusan",
"Jumlah Benar",
"Total Soal",
"Jumlah Pelanggaran",
"Auto Submit",
"Waktu Selesai"
]);
try {
sheet.getRange(1, 1, 1, 14).setFontWeight("bold");
} catch (fErr) {}
}
// 5. Parse data JSON dari aplikasi CBT
var data = JSON.parse(e.postData.contents);
// 6. Cek & blokir duplikasi data (Nama, Nomor Absen, Kelas, Mata Pelajaran)
var lastRow = sheet.getLastRow();
if (lastRow > 1 && data.nama && data.kelas && data.mataPelajaran && data.nama !== "Uji Coba Sistem") {
var range = sheet.getRange(2, 2, lastRow - 1, 4).getValues();
var targetNama = String(data.nama).trim().toLowerCase();
var targetNomor = String(data.nomor || '').trim().toLowerCase();
var targetKelas = String(data.kelas).trim().toLowerCase();
var targetMapel = String(data.mataPelajaran).trim().toLowerCase();
for (var r = 0; r < range.length; r++) {
var rowNama = String(range[r][0] || '').trim().toLowerCase();
var rowNomor = String(range[r][1] || '').trim().toLowerCase();
var rowKelas = String(range[r][2] || '').trim().toLowerCase();
var rowMapel = String(range[r][3] || '').trim().toLowerCase();
if (rowNama === targetNama && rowNomor === targetNomor && rowKelas === targetKelas && rowMapel === targetMapel) {
return ContentService.createTextOutput(JSON.stringify({
result: "duplicate_skipped",
message: "Data sudah tercatat di sheet " + todayStr
})).setMimeType(ContentService.MimeType.JSON);
}
}
}
// 7. Tambahkan baris data siswa ke sheet tanggal hari ini
sheet.appendRow([
data.waktuSelesai || Utilities.formatDate(new Date(), timezone, "dd/MM/yyyy HH:mm:ss"),
data.nama || "",
data.nomor || "",
data.kelas || "",
data.mataPelajaran || "",
data.nilai !== undefined ? data.nilai : 0,
data.nilaiMaksimal || 100,
data.kkm || 75,
data.statusKelulusan || "",
data.benar !== undefined ? data.benar : 0,
data.totalSoal || 0,
data.pelanggaran !== undefined ? data.pelanggaran : 0,
data.autoSubmit ? "Ya" : "Tidak",
data.waktuSelesai || ""
]);
SpreadsheetApp.flush();
return ContentService.createTextOutput(JSON.stringify({
result: "success",
sheet: todayStr
})).setMimeType(ContentService.MimeType.JSON);
} catch(error) {
return ContentService.createTextOutput(JSON.stringify({
result: "error",
error: error.toString()
})).setMimeType(ContentService.MimeType.JSON);
} finally {
lock.releaseLock();
}
}
function doGet(e) {
return ContentService.createTextOutput(JSON.stringify({
status: "active",
message: "Google Apps Script CBT Endpoint aktif dan siap menerima data."
})).setMimeType(ContentService.MimeType.JSON);
}
Cetak & Ekspor Dokumen Soal Ujian (Rata Kanan-Kiri)
Konfigurasi tata letak halaman untuk cetak fisik, simpan PDF, atau ekspor ke Microsoft Word (.rtf) dan Excel (.xlsx) dengan perataan rata kanan-kiri (justify).
Log Audit & Analisis Forensik Ujian Siswa
Riwayat sesi ujian terakhir yang tersimpan di perangkat ini, termasuk timestamp per butir soal, deteksi anomali kecepatan, dan catatan pelanggaran proctoring.
Download File HTML Mandiri (Self-Contained Deployment)
Fitur ini menyematkan seluruh konfigurasi terbaru (judul, durasi, KKM, token, 319 database siswa, jadwal, dan bank soal) langsung ke dalam file HTML. Anda dapat membagikan file ini ke seluruh siswa atau mengunggahnya ke hosting / GitHub Pages / server lokal tanpa perlu konfigurasi ulang.
- Pastikan seluruh pengaturan dan data soal/siswa sudah disimpan.
- Klik tombol "Download HTML Terbaru" di bawah.
- File HTML baru akan otomatis terunduh dengan versi rilis yang diperbarui.
- Ganti file lama di hosting/server Anda dengan file baru tersebut.
Sinkronisasi & Pemulihan Data Bawaan File HTML
Jika Anda membuka file HTML hasil unduhan dari GitHub Pages atau mengedit repository langsung di GitHub, namun browser Anda masih menampilkan data lama dari sesi sebelumnya (karena browser mengutamakan cache lokal perangkat), klik tombol di bawah untuk menyinkronkan seluruh database siswa, jadwal, dan bank soal langsung dari data yang tertanam di file HTML ini.
Backup & Restore Basis Data Sistem (.JSON)
Unduh seluruh database sistem (319 database siswa, bank soal seluruh mata pelajaran, jadwal ujian, integrasi spreadsheet per kelas, serta konfigurasi token dan durasi) menjadi satu file arsip cadangan .json. Anda dapat memulihkan file cadangan ini kapan saja ke komputer ini atau perangkat proktor lain secara instan tanpa perlu input manual.
Database kini memuat 319 siswa, 3 mata pelajaran, 3 jadwal ujian.
Pembersihan Sesi Ujian & Cache Siswa
Gunakan tombol ini sebelum membagikan file HTML agar data ujian sementara dari siswa sebelumnya terhapus bersih.