Enter each course's academic, effort, and conduct grades to determine Honor Roll eligibility.
| Field | Values |
|---|---|
| Academic | GPA 2.0 – 4.0, or percentage 50 – 100 (auto-converted: 100 = 4.0, 75 = 3.0, 50 = 2.0) |
| Effort | 1 = Excellent 2 = Good 3 = Satisfactory |
| Conduct | 4 = A 3 = B 2 = C |
3.7, 3.5, 4.0, 3.2) into the bulk import box and click Import. Effort and Conduct default to 1 and 4 respectively — review them before calculating.3.7, 3.5, 4.0, 3.2, 3.8, 3.6, 3.5).
// PARAMETER: Set which period to extract
// 1 = 1st 9-Weeks, 2 = 2nd 9-Weeks, 3 = 3rd 9-Weeks, 4 = 4th
const periodIndex = 1; // Change this: 1, 2, 3, or 4
const gradesData = [];
document.querySelectorAll('div.grid > div.row').forEach(row => {
const course = row.querySelector('span.course')?.textContent.trim();
const teacher = row.querySelector('div.teacher')?.textContent.trim();
// Get ALL letter-containers for this course
const allGrades = row.querySelectorAll('a.letter-container');
// Reverse to get chronological order
const reversedGrades = Array.from(allGrades).reverse();
// Select based on periodIndex
if (reversedGrades[periodIndex - 1]) {
const gradeContainer = reversedGrades[periodIndex - 1];
const gpa = gradeContainer.querySelector('span.percent')
?.textContent.trim() || 'N/A';
const period = gradeContainer.querySelector('div.letter-label')
?.textContent.trim();
// Only add if GPA is numeric (ignore N/A)
if (gpa !== 'N/A' && !isNaN(parseFloat(gpa))) {
gradesData.push({ course, teacher, period, gpa });
}
}
});
// Display as table
console.table(gradesData);
// Create comma-separated list
const gpaList = gradesData.map(g => g.gpa).join(',');
console.log(
'\n\uD83D\uDCCB Comma-separated GPAs (Period ' + periodIndex + '):'
);
console.log(gpaList);
// Copy to clipboard
copy(gpaList);
alert(
'Period ' + periodIndex + ' GPA list copied!\n\n' + gpaList
);
Disclaimer: This calculator is intended for reference purposes only. Results may not reflect official school determinations. Always verify Honor Roll eligibility with your school's records office.