Halo, Panitia! ๐
Selamat datang di AO Event Dashboard
0
Total Peserta
0
Sudah Check-in
0
Belum Hadir
Progress Check-in
0%
Peserta Terbaru
Belum ada peserta
Aksi Cepat
Form Registrasi
Tambahkan peserta baru ke database event
QR Generator
Generate QR Code per peserta untuk dikirim manual
QR di sini berisi ID Unik setiap peserta. Download โ kirim via email / WA ke masing-masing peserta.
Generate QR Individual
Pilih peserta dari daftar atau masukkan ID manual
Cara Kerja
1
Pilih peserta & generate QR
Setiap peserta dapat QR unik berisi ID mereka
2
Download & kirim manual
Kirim via email atau WA ke masing-masing peserta
3
Hari H: Scan โ Check-in otomatis
Scanner HP panitia baca QR โ data masuk Google Sheets
Scanner Check-in
Scan QR peserta untuk check-in hari H
Klik Mulai Kamera
Daftar Peserta
Semua peserta yang telah terdaftar
| ID | Nama | Instansi | No. HP | Status | Terdaftar | Aksi | |
|---|---|---|---|---|---|---|---|
Belum ada peserta | |||||||
Pengaturan
Hubungkan dengan Google Sheets melalui Apps Script
Nama Event
Nama ini ditampilkan di dashboard
Google Sheets Integration
Paste URL Apps Script Web App kamu di sini. URL ini didapat setelah kamu deploy script di Google Sheets.
Lihat panduan setup di bawah โ URL berbentuk: https://script.google.com/macros/s/.../exec
๐ Panduan Setup Google Sheets
Ikuti langkah ini untuk menghubungkan AO Event dengan Google Sheets kamu
Step 1 โ Buat Google Form
Buat form dengan field: Nama Lengkap, Instansi, Email, No. HP. Setelah form dibuat, Google Sheets otomatis tersambung.
Step 2 โ Buka Apps Script
Di Google Sheets โ menu Extensions โ Apps Script โ paste kode script dari panduan โ Save.
Step 3 โ Deploy Web App
Deploy โ New Deployment โ Web App. Set "Who has access" ke Anyone. Copy URL yang muncul โ paste di field atas.
Step 4 โ Test & Selesai
Klik "Test Koneksi" di atas. Kalau berhasil, data peserta dari Sheets akan sinkron ke app ini.
๐ Kode Apps Script
Copy kode ini ke Google Apps Script kamu
// ============================================
// AO Event โ Apps Script for Google Sheets
// Paste this in Extensions > Apps Script
// ============================================
const SHEET_NAME = "Form Responses 1"; // Sesuaikan nama sheet kamu
function doGet(e) {
const action = e.parameter.action || "list";
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(SHEET_NAME);
const data = sheet.getDataRange().getValues();
const headers = data[0];
if (action === "list") {
const rows = data.slice(1).map((row, i) => {
const id = "EVT-" + String(i+1).padStart(3,"0");
return {
id: id,
nama: row[1] || "",
instansi: row[2] || "",
email: row[3] || "",
hp: row[4] || "",
ci: row[5] === true || row[5] === "TRUE",
ciTime: row[6] || null,
regAt: row[0] || ""
};
});
return ContentService
.createTextOutput(JSON.stringify({ok:true, data:rows}))
.setMimeType(ContentService.MimeType.JSON);
}
if (action === "checkin") {
const id = e.parameter.id;
const rows = data.slice(1);
for (let i = 0; i < rows.length; i++) {
const rowId = "EVT-" + String(i+1).padStart(3,"0");
if (rowId === id) {
if (rows[i][5] === true || rows[i][5] === "TRUE") {
return ContentService
.createTextOutput(JSON.stringify({ok:false, alreadyIn:true, nama:rows[i][1]}))
.setMimeType(ContentService.MimeType.JSON);
}
sheet.getRange(i+2, 6).setValue(true);
sheet.getRange(i+2, 7).setValue(new Date().toISOString());
return ContentService
.createTextOutput(JSON.stringify({ok:true, nama:rows[i][1], instansi:rows[i][2], email:rows[i][3]}))
.setMimeType(ContentService.MimeType.JSON);
}
}
return ContentService
.createTextOutput(JSON.stringify({ok:false, notFound:true}))
.setMimeType(ContentService.MimeType.JSON);
}
return ContentService
.createTextOutput(JSON.stringify({ok:true, msg:"AO Event API Ready"}))
.setMimeType(ContentService.MimeType.JSON);
}
โ ๏ธ Pastikan kolom di Sheets kamu: Timestamp | Nama | Instansi | Email | HP | CheckIn | CheckInTime. Kolom CheckIn & CheckInTime ditambahkan manual.