The Instructure Community will enter a read-only state on November 22, 2025 as we prepare to migrate to our new Community platform in early December.
Read our blog post for more info about this change.
Found this content helpful? Log in or sign up to leave a like!
Our campus just switched from BlackBoard to Canvas. One of the features we utilized in BB was the ability to create a calculated column using both assignments and *another* calculated column. We did this to document any necessary grade adjustments without compromising the original scores. E.g. The "written exam" column would be calculated to include scores from Exams 1-4; the "adjusted written exam" column would be calculated to include the "written exam" column + "adjusted written exam points". Doing this gives us both data points for reference in future analyses.
Is there any workaround for doing this in Canvas? I know how to create assignment groups, but I can't find a way to use an assignment group in the calculation of a new column/assignment group without duplicating all the scores and, consequently, the overall points possible in the course.
Solved! Go to Solution.
There is no way to create calculated grades within the native interface. There are some ways to work around it, but they all require extra effort.
Ultimately, you would need an extra assignment to hold the grade that you want. Then you tell Canvas to not use the other assignments for grading. You can do that by checking the box to not count this grade towards the final. If you use a weighted gradebook, then you can use an assignment group to hold the initial scores and make that assignment group worth 0% of the grade and it doesn't matter if you check that box. If you use graded Classic Quizzes, there is no option to make it not count, so an assignment group worth 0% is the route to take.
I used the 0% assignment group in a course this spring. I had all of the assignments from an outside homework tool go into that group. I gave the students full points for taking a pre-test, regardless of their score. If they scored above 80% on the pretest, they didn't have to do any of the homework and I gave them that score for the exam. If they did do the homework, then I used that score instead. If they took the test and that grade was higher than their homework grade, then I used the exam score for their homework grade. There were some other techniques in there, but all of the original scores from the outside system were kept inside Canvas.
Within the normal assignment groups, I held a single score for all of the homework for the chapter, an assignment for the exam score, an assignment for taking the pretest, etc. The stuff that was used to calculate scores but wasn't used directly went into a "non-graded" assignment group worth 0% of the grade.
Since I can do a little programming, I wrote a script that would download all of their grades from Canvas, compute the scores and update Canvas with those so I didn't have to mess with it. An alternative is to use the Gradebook export feature, bring the grades into Excel, create the value of the calculated field, and then import the grades back into Canvas.
I have the same question. I haven't found a way yet to create a calculated column separate from the Total column, although you can use assignment groups to "total" items within it and then use the Assignment Groups Weight to use those groups to create the total. I've been looking for a way to average grades in a column as well.
There is no way to create calculated grades within the native interface. There are some ways to work around it, but they all require extra effort.
Ultimately, you would need an extra assignment to hold the grade that you want. Then you tell Canvas to not use the other assignments for grading. You can do that by checking the box to not count this grade towards the final. If you use a weighted gradebook, then you can use an assignment group to hold the initial scores and make that assignment group worth 0% of the grade and it doesn't matter if you check that box. If you use graded Classic Quizzes, there is no option to make it not count, so an assignment group worth 0% is the route to take.
I used the 0% assignment group in a course this spring. I had all of the assignments from an outside homework tool go into that group. I gave the students full points for taking a pre-test, regardless of their score. If they scored above 80% on the pretest, they didn't have to do any of the homework and I gave them that score for the exam. If they did do the homework, then I used that score instead. If they took the test and that grade was higher than their homework grade, then I used the exam score for their homework grade. There were some other techniques in there, but all of the original scores from the outside system were kept inside Canvas.
Within the normal assignment groups, I held a single score for all of the homework for the chapter, an assignment for the exam score, an assignment for taking the pretest, etc. The stuff that was used to calculate scores but wasn't used directly went into a "non-graded" assignment group worth 0% of the grade.
Since I can do a little programming, I wrote a script that would download all of their grades from Canvas, compute the scores and update Canvas with those so I didn't have to mess with it. An alternative is to use the Gradebook export feature, bring the grades into Excel, create the value of the calculated field, and then import the grades back into Canvas.
Nice work around James. I do something similar. I am wondering what script did you write for downloading grades, compute grades and update canvas - I would love to get my hand on it if you are willing to share.
That script is highly specific to my use case and relies on a personal library I wrote that I'm not willing to support. There are actually several places where I do this, all with slightly different parameters or goals. The one closest to this case is for a course I probably won't ever teach again (it took grades from an external tool and put them into Canvas grades). I have other scripts that will update the rubric for an assignment.
I use a mix of the GraphQL and REST APIs get/put the information. I tried doing the whole thing in GraphQL since it's usually faster, but found that grades weren't getting updated. SpeedGrader was forcing me to go in and click the "reuse grade for this submission" even though I had programmatically told it to do that. Using the REST API reset that toggle so I didn't have to manually do it, but it does it in batch/background mode so it wasn't always immediate.
The important thing to realize is that scores for assignments are handled through the Submissions API. There are different endpoints there, but it lets you know what the scores are and handles the updating of grades.
Thanks, James. This is a very clever workaround.
And, I still would like it to be functionality provided within Canvas.
Community helpTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign inTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign in