Index.html
<!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Absensi Online SD Negeri 11 Ambon</title> <style> body { font-family: sans-serif; max-width: 600px; margin: 30px auto; background: #f1f1f1; padding: 20px; border-radius: 10px; } input, select, textarea, button { width: 100%; padding: 10px; margin-top: 10px; border-radius: 5px; border: 1px solid #ccc; } button { background-color: #0077cc; color: white; font-weight: bold; margin-top: 20px; } .clock { background: #fff; padding: 10px; border-radius: 5px; margin-bottom: 20px; text-align: center; font-size: 16px; font-weight: bold; } </style> </head> <body> <h2>📘 Absensi Online</h2> <h3>SD Negeri 11 Ambon</h3> <div class="clock"> ⏰ Waktu Indonesia Timur (WIT): <span id="clock-wit">Memuat waktu...</span> </div> <form id="form-absensi" method="POST" action="=== MASUKAN URL APPS SCRIPT DISINI ==="> <label>Kelas:</label> <select name="kelas" required> <option value="Kelas 5">Kelas 5</option> </select> <label>NIS:</label> <textarea name="nis" placeholder="Masukkan NIS murid" required></textarea> <label>Nama Murid:</label> <input type="text" name="namamurid" placeholder="Masukkan nama murid" required> <label>Tanggal:</label> <input type="date" name="tanggal" required> <label>Keterangan:</label> <select name="keterangan" required> <option value="Hadir">Hadir</option> <option value="Sakit">Sakit</option> <option value="Izin">Izin</option> <option value="Alpa">Alpa</option> </select> <!-- Hidden input untuk waktu pengiriman --> <input type="hidden" id="waktupengiriman" name="waktupengiriman"> <button type="submit">Kirim Absensi</button> </form> <script> const form = document.getElementById("form-absensi"); const clockEl = document.getElementById("clock-wit"); function updateClockWIT() { const now = new Date(); const formatter = new Intl.DateTimeFormat("id-ID", { timeZone: "Asia/Jayapura", year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false }); clockEl.textContent = formatter.format(now); } setInterval(updateClockWIT, 1000); updateClockWIT(); form.addEventListener("submit", function () { const now = new Date(); const formattedTime = new Intl.DateTimeFormat("id-ID", { timeZone: "Asia/Jayapura", year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false }).format(now); document.getElementById("waktupengiriman").value = formattedTime; }); </script> </body> </html>
APPSCRIPT
// Menerima data dari form function doPost(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("AbsensiOnline"); if (!sheet) { sheet = ss.insertSheet("AbsensiOnline"); sheet.appendRow(["Kelas", "NIS", "Nama Murid", "Tanggal", "Keterangan", "Waktu Pengiriman (WIT)"]); } var data = [ e.parameter.kelas, e.parameter.nis, e.parameter.namamurid, e.parameter.tanggal, e.parameter.keterangan, e.parameter.waktupengiriman ]; sheet.appendRow(data); return ContentService.createTextOutput("✅ Data berhasil disimpan!"); } // Menampilkan halaman rekap absensi + tombol cetak function doGet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("AbsensiOnline"); var data = sheet.getDataRange().getValues(); var html = '<html><head><title>Rekap Absensi</title><style>'; html += 'body { font-family: sans-serif; padding: 20px; }'; html += 'table { border-collapse: collapse; width: 100%; }'; html += 'th, td { border: 1px solid #ccc; padding: 8px; text-align: left; }'; html += 'th { background-color: #0077cc; color: white; }'; html += 'button { margin-top: 20px; padding: 10px 20px; font-weight: bold; }'; html += '</style></head><body>'; html += '<h2>📝 Rekap Absensi SD Negeri 11 Ambon</h2>'; html += '<table><tr>'; // Header data[0].forEach(function (col) { html += '<th>' + col + '</th>'; }); html += '</tr>'; // Data for (var i = 1; i < data.length; i++) { html += '<tr>'; data[i].forEach(function (cell) { html += '<td>' + (cell || '') + '</td>'; }); html += '</tr>'; } html += '</table>'; html += '<button onclick="window.print()">🖨️ Cetak Rekap</button>'; html += '</body></html>'; return HtmlService.createHtmlOutput(html) .setTitle("Rekap Absensi") .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); }
Tidak ada komentar:
Posting Komentar