SeminLogic is a modular automation suite built with Google Apps Script. It transforms Google Sheets into a smart management hub that handles seminar registrations, enforces scheduling logic, and automates high-quality student communication.
- 🛡️ Schedule Integrity (Time-Clash Logic): Prevents a student from registering for two different seminars happening at the same time.
- 👥 Smart Multi-User Logic: Allows one email to register multiple distinct participants (e.g., family members), but blocks exact duplicates (same name + same email + same seminar).
- ⏰ Automated Reminders: Sends professional HTML emails to confirmed participants exactly ~1 hour before the session starts.
- 🔄 Self-Managing Database:
- Auto-Status: Marks seminars as "Completed" automatically 2 hours after their start time.
- Live Enrollment: Keeps a real-time count of confirmed students in the master catalog.
- 📧 Professional Branding: Responsive HTML email templates with CDN-optimized images for instant rendering.
To use this system, your Google Sheets must follow this specific column structure:
This acts as your Master Catalog.
| Column | Header | Description |
|---|---|---|
| B (2) | SeminarID |
Unique identifier (e.g., SEM-101) |
| C (3) | SeminarTitle |
Name of the seminar |
| D (4) | SeminarDate |
Format: M/D/YYYY |
| E (5) | Time |
Format: H:MM:SS AM/PM |
| H (8) | Status |
Value: Upcoming (Script changes this to Completed) |
| M (13) | Total Registered |
Live enrollment count (Updated by Script) |
This stores student submissions from the Google Form.
| Column | Header | Description |
|---|---|---|
| B (2) | SeminarID |
The ID selected by the user |
| C (3) | Name |
Participant's full name |
| D (4) | Email Address |
Contact email |
| H (8) | IsEmail |
Status column: ✅ Confirmed, ⚠️ Duplicate, or ❌ Time Clash |
- Open your Google Sheet.
- Navigate to Extensions > Apps Script.
- Create 5 separate files:
Config.gs,Main.gs,Automations.gs,Helpers.gs, andComposeHtml.gs. - Copy the code from this repository into the respective files.
Open Config.gs and update the placeholders:
SEMINAR_FILE_ID: The ID of your Spreadsheet.FIXED_WA_LINK: Your WhatsApp community link.
Configure the following triggers in the Apps Script dashboard (⏰ icon):
| Function | Event Source | Type |
|---|---|---|
onFormSubmit |
From Spreadsheet | On form submit |
autoReminderTrigger |
Time-driven | Hour timer (Every hour) |
updateSeminarStatus |
Time-driven | Day timer (1 AM to 2 AM) |
The system checks the database for existing entries. If a user submits the same Name, Email, and Seminar ID, the system flags it as a duplicate and does not send a confirmation email, saving your daily quota.
The script parses the date and time strings. If a student is already confirmed for Seminar A at 8:00 PM, the system will block registration for Seminar B if it is also scheduled for 8:00 PM on the same day.
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this useful, you can simply ** fork ** the repository and deploy it for your organization. Don't forget to Star ⭐ the project if it helps you!
- Open an Issue to discuss your idea.
- Submit a Pull Request with your improvements.
- Email: [mohammad.mehd.prof@gmail.com]
- LinkedIn: [https://www.linkedin.com/in/mohammad-mehdi-289b841ab/]
SyncLearn Manager - Modular Automation for Educational Excellence.