The Grade Calculator is a custom Google Sheets application designed to automatically calculate the grade in a course based on weighted categories or individual assignments. It intelligently handles various input formats (fractions such as 85/100 or direct percentages), supports extra credit, allows assignments to be excluded, and uses a default grade for empty categories (which is configurable through a variable sheet).
Weighted Category System:
Supports multiple grading categories with custom weights.
Flexible Grade Input:
Accepts both fracctional scores (e.g., 42/50) and direct percentages.
Extra Credit Support:
Properly calculates grades when the denominator is 0.
Assignment Control:
Users can mark assignments as "Does Not Count" with (FALSE or NO) to be excluded from the grade.
Smart Defaults:
Uses a configurable default grade for categories with no graded assignments.
Live Calculations:
Automatically updates category averages and final weighted grade.
Clean Output:
Displays per-category percentages and the final course grade.
Google Apps Script and Google Sheets automation
Dynamic data processing and spreadsheet interaction
Weighted average calculations
Flexible input parsing (fractions vs percentages)
Error handling and graceful defaults
User-configurable settings via a spearate Variable sheet
Iterative development and debugging of complex formulas in code
The user sets up grading categories and their weights.
Assignments are entered with category, score, and whether they count.
The Script:
Parses each grade (handles the fractions and extra credit).
Calculates weighted averages per category.
Applies the default grade for empty categories.
Computes the final weighted course grade.
Resultes are then written back to the sheet.
This project significantly improved my ability to build practical, user-friendly automation tools using Google Apps Script. Through multiple iterations, I learned how to handle real-world grading scenarios, including edge cases like extra credit, empty categories, and non-counting assignments.
I gained strong experience in parsing varied input formats, implenting weighted grade calculations, and designing flexible systems that don't break when data is incomplete.