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.
A useful program would be one that could migrate a student's grades from one Canvas course to another. For example, when the student has re-registered to complete a course - it would be very convenient for the teacher to be able to have the previous grades (for parts of the course) migrated into the new Canvas course. Unlike the question raised by @help in Migrating users/students from one canvas instance to another this Canvas course would be within the same instance of Canvas, but is simply another course. Note also that I am not suggesting migrating all of their submissions, just their grades for assignments and assignment groups.
Has anyone implemented such a program? What about automatically importing the student's grades from the earlier course via a SIS import from the grading records system?
[Based upon a program I am writing that takes grades from another system and creates the corresponding assignments, enrolls the students, and enters a grade (if one exists) for each student for each assignment; I do not think that this copying would be that hard to implement.]
Inserting grades for a student for an assignment via a program is really simple, see: Inserting a grade for a student into a course: Chip sandbox
A prototype program that copies grades from one Canvas course to another is now available (with some explanation) at Copying grades from one Canvas course to another: Chip sandbox
As noted on this page, the program needs many improvements, such as ensuring that the highest grade is retained - but these are left to future work.
Thanks for sharing the code! It really helped me in finding out how to get the grade for a specific assignment for a specific user. After the missing grades report that I needed to create, I need to work on a report that get the grades of specific students (who belong to an external group) who are scattered in different courses in Canvas.
Step 1: Get the list of users for that external group from our SIS
Step 2: Using the user e-mail, get the userid from Canvas
Step 3: Using the classname and term from SIS, get the courseid from Canvas
Step 4: Using the userid and courseid, use the 2 functions in Gerald's script to get the grades for the assignments for that student in that course
What about in step 2 using the user's SIS ID to get their Canvas user_id? (By prefixing the SIS ID xxxxx with 'sis_user_id:' and shown at Looking up a user in Canvas: Chip sandbox ). You can replace Step 3 with
GET /v1/users/{user_id}/enrollments using the sis_user_id:xxxxx
This will return the courses that this user is enrolled in. (You can limit the type of enrollment, for example by specifying "StudentEnrollment".) This response will include the course_id for each course that the user is enrolled in. Then you can use GET /api/v1/courses/:course_id/assignments to get all of the assignments for the course and then get the grades for each.
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
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.