Showing results for 
Show  only  | Search instead for 
Did you mean: 
Community Participant

Display Letter Grade/Grading Scheme Letter on Student Grades Page?

Hi everyone,

We are using the View All Grades script created by  @James ‌ so that our homeroom teachers and support staff can get a better picture of student performance across all courses in Canvas. This has been an extremely helpful tool for us! This year however, our high school has been moving to a mastery-based grading approach (ie. 4, 3, 2, 1 rubrics for every assignment). 

This is difficult to communicate through Canvas, primarily because the standard 90 = A, 80 = B, etc., grading scales may no longer apply. For example, our range for B- through B+ actually scales from ~62% to ~87%. We are doing our best to manage this with Grading Schemes, and that works fine at the course level because that new scale shows on the Student View of Grades and in the course Gradebook (see below):

298250_Grades for Lauren Cruz  2019 Fall   Math 1A.png

The issue arises when a student, parent, teacher, or support staff looks at the course-wide grades page. Grading schemes do not appear in this page! So, if a user is not aware of the Grading Scheme applied to the course, they could assume the student is actually doing worse than they are (it looks like they have a C, when actually they have a B - see Math 1A below).

298251_Grades  sample.png

I'm bringing this to the community in hopes that someone might have an amazing and quick fix for this, possibly using Javascript. All we would really need is the Grading Scheme letter for that course brought into this view, next to the percentage. Replacing the percentage entirely with just the Letter Grade would be something we might want eventually too.

Thanks for any help or insight you might have on this!

0 Kudos
11 Replies
Community Champion

What page are the grades you want users to see, and what page are you trying to add those grades too?

Community Participant

The grades need to appear here: - this is the grades page for each student

The grade data we wanted added is a Letter Grade, which is communicated through the course grading scheme. I'm not sure what the best way to grab this information would be. It does appear on pages like the course grade for the student - so, for example:

On that specific page the value is here:


I suspected as much. I tinkered with a little hack one day for 

I was unable to 'forward rip', basically making a request from one page to grab content from another page and bring it to the current page. The content on the Course Grades page is loaded with Javascript, after the initial page load. Essentially the grade isn't part of the page until the browser makes additional requests. I don't know of a way around that.

We'd probably have to look at making API requests to pull those grades (and grading schema) if possible.

Community Participant

That makes sense. I was looking around at the API earlier and managed to find that letter grades (dictated by the scheme) come from "current_grade" whereas the numeric scores come from "current_score."

Unfortunately I have no idea on how to get that "current_grade" data onto the page.

Which API endpoint? When I try /api/v1/courses/123?include[]=total_scores

“total_scores”: Optional information to include with each Course. When total_scores is given, any student enrollments will also include the fields 'computed_current_score', 'computed_final_score', 'computed_current_grade', and 'computed_final_grade', as well as (if the user has permission) 'unposted_current_score', 'unposted_final_score', 'unposted_current_grade', and 'unposted_final_grade' (see Enrollment documentation for more information on these fields). This argument is ignored if the course is configured to hide final grades.

But the course I tried didn't return scores.

Community Champion

If you have a single school-wide grading scheme, it may be easier to hard-code that scheme into an If statement in your JavaScript that you run on the grades page to assign your grading scheme grades to the percentages rather than try to dynamically load that information from elsewhere in Canvas. (This doesn't work if not all classes use the same grading scheme since you'd need to also keep a list of which classes used which, and that's beyond what you should try to maintain in a hack like that unless you have far fewer classes to keep track of than any school I've worked in. I can think of further wacky hackish things to try, such as using a naming scheme for your courses that lets your script look for a certain keyword in course names to know which grading scheme to apply, but all of them are probably terrible ideas that would eventually involve a giant nested if statement full of bugs.) 

Community Participant

Hi Linnea,

We had considered your first idea, but our sites and programs are so varied that we really need to give them the freedom to use their own grading schemes. This is another reason why we want to make the scheme more visible to all users - one school might be different from another scheme-wise, so the default percentage that Canvas shows can mean different grades depending on the context of the course.

Community Participant

I was browsing the data returned from: /api/v1/users/:user_id/enrollments

This has all the user grade data for each of their course enrollments, so I was thinking that could be matched up and displayed with their course enrollments listed on:

The grading scheme is visible in both the "current_grade" and "unposted_current_grade" values.

Community Participant

Hi folks,

We are still stuck on this. Anyone else have any possible solutions? Thanks!