QR ATTENDANCE MANAGEMENT SYSTEM

Developed by Kiko Abellera
Google Sheets: not connected

Administrator

Everything below is admin-only: event setup, roster and QR codes, the attendance log, PDF reports, and connection settings.

Event Details

Start here. Name the event and set how many days it runs β€” everything else (QR codes, scanning, reports) is organized under this event.
Each Day has a Morning and Afternoon session, each with its own Time In and Time Out β€” set on the Scan Attendance tab. A student can only be recorded once per checkpoint (e.g. Day 1 Morning Time In), so accidental double-scans are automatically blocked.

Sync Roster to Other Scanning Devices

Each device stores its own roster. If different phones/laptops will be scanning at different stations, build the roster on one device first, then export it here and import that file on every other device β€” that way, every device recognizes the same students and the same QR codes.
Send the exported file to the other devices any way that's convenient β€” email, Google Drive, USB cable, Bluetooth, Messenger, etc. β€” then open it from the Import button on each device. QR codes themselves don't need to be re-sent; only this roster file does.

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.
0
Total Scans
0
Time In
0
Time Out
0
Pending Sync

Full Attendance Log

No attendance recorded yet.

Student Attendance Report

Generates a printable PDF for one student showing Time In / Time Out for every day and session of the current event.

All Students β€” Bulk Report

One combined PDF, one page per student. Useful for filing after the event.

Google Sheets Connection

Every scan is sent live to a Google Sheet through a small Apps Script you deploy once. See setup steps below.

Admin Access

The Event, Roster, Attendance Log, Reports, and this Settings tab all require the admin username and password. The Scan Attendance tab stays open for anyone to use.
Important: this password check runs inside the browser, not on a server β€” it's meant to stop casual access by students or volunteers at the check-in table, not to withstand someone deliberately inspecting the page's code. Don't reuse a sensitive password here.

One-time Google Apps Script Setup

Do this once per Google Sheet you want attendance to sync to.
  1. Open (or create) the Google Sheet you want attendance saved to.
  2. Go to Extensions β†’ Apps Script.
  3. Delete any starter code and paste the script shown below.
  4. Click Deploy β†’ New deployment. Choose type Web app.
  5. Set "Execute as" to Me, and "Who has access" to Anyone.
  6. Click Deploy, authorize when prompted, then copy the Web app URL.
  7. 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.
Already deployed before? This version adds a Day Date column. Paste the updated script in, then Deploy β†’ Manage deployments β†’ edit (pencil) β†’ New version β†’ Deploy β€” same URL, no need to reconnect. If your Sheet already has an old header row, add a "Day Date" header between Day and Session, or delete the Attendance sheet tab so it regenerates.
β–£
Tap Start Scanning to open the camera
Camera Off

Recent Scans

Live feed for this session
Nothing scanned yet.

Daily Attendance Report