Import Enrollment List (Excel)
Upload the enrollment list exported from your system (.xlsx). Only Student No. and Name are read in โ everything else is ignored. Students are automatically grouped by Year Level.
Add Student
Each student gets one unique QR code generated from their Student ID.
Or paste a list below โ one student per line, format:
ID, Name, Section (also accepts pasting straight from an Excel/Sheets column selection).Roster (0)
Generate and print QR ID cards for check-in.
No students added yet.
Point a student's QR code at the camera.
Just Scanned
Most recent scans this session
Nothing scanned yet.
0
Total Scans
0
Time In
0
Time Out
0
Pending Sync
Full Attendance Log
No attendance recorded yet.
Google Sheets Connection
Every scan is sent live to a Google Sheet through a small Apps Script you deploy once. See setup steps below.
One-time Google Apps Script Setup
Do this once per Google Sheet you want attendance to sync to.
- Open (or create) the Google Sheet you want attendance saved to.
- Go to Extensions โ Apps Script.
- Delete any starter code and paste the script shown below.
- Click Deploy โ New deployment. Choose type Web app.
- Set "Execute as" to Me, and "Who has access" to Anyone.
- Click Deploy, authorize when prompted, then copy the Web app URL.
- Paste that URL into the field above and click Save Settings, then Send Test Row โ check your Sheet for a row that says TEST.
Because Google Apps Script doesn't send back normal browser CORS headers, this app posts data "blind" (it can't read the reply). Every scan is also kept in this app's local log as a backup, so nothing is lost even if a sync silently fails โ use Retry Pending Sync on the Log tab if you were ever offline.
If a row still doesn't appear after sending a test: check the Sheet for a row starting with
DEBUG or PARSE_ERROR โ it will show you the exact reason the script gave up. Also open Deploy โ Manage deployments in the Apps Script editor and confirm "Who has access" is set to Anyone, not "Anyone with Google account" โ the app sends requests anonymously, so a login-restricted deployment will reject them without any visible error on your end.