This is a post I made to the Canvas community describing a google app I worked on to solve the problem of editing assignment dates in Canvas. This app was built on James Jones original work but with additional functions. The app is available to anyone on the community. It is extremely useful for copying courses semester-to-semester. It took about 20 hours of coding. It should take much less time, but since I had never used Google script, and I don’t really do this all the time, I had to look up syntax and do extra debugging.
Problem:
Each semester, courses must be copied to new courses and during this process it takes about an hour per course to edit dates for each individual assignment, even using the calendar (isn’t it annoying the way the calendar keeps reloading every time you move an assignment?). Canvas just does not have the tools necessary to edit dates easily.
James Jones previously created a google sheet that allows us to import dates from a canvas course, manually update them in the spreadsheet and then export them back to Canvas. You can find instructions in his document Adjust All Assignment Dates on One Page. This is much better than any method available in Canvas, but still requires repeating the same process for each course, even though the dates are exactly the same. Thank you, James for allowing me to use your work and just add some more functions to the sheet!
Thought-process:
Each semester has the same number of class sessions.
Every assignment, quiz, or class plan is attached to one of those class sessions.
In theory, we should be able to schedule Class Sessions and have assignments line up based on their attachment.
Session | Date | Canvas Assignment |
---|---|---|
Session 1 | Jan 8 2018 | Class 1 |
Session 2 | Jan 10 2018 | Class 2 |
Assignment 1 due | ||
Session 3 | Jan 12 2018 | Class 3 |
Quiz 1 due |
Solution:
Create a ‘hook’ inside each assignment/quiz that can hold the session number.
After importing the course into the google sheet, apply a LIST of class sessions based on the ‘hook’ in each assignment.
Or explained another way: Every assignment or quiz in Canvas requiring a date gets a number matching the class session in which it occurs. If it happens first day of class, it gets the hook ‘session 1’. If it occurs the 2nd week on the 4th class session, it gets the hook ‘session 4’.
OK, I realize this is probably complicated to explain. But if you have to copy a lot of courses, stick with me and I promise it will save you time in the end.
Use:
Go to this google sheet and copy it to your own Google drive: Canvas Bulk Date Editor – Google Sheets
Step 1:
In your course in Canvas, open every assignment or quiz that has a date attached and place the ‘hook’ in the description/instructions. The hook is the word “session” plus a number. Neither capitalization nor leading zeros matter. You can do this quickly if you copy and paste, just changing the number as you go. This is the most time-consuming part, but certainly doesn’t take longer than the usual method and you will never have to do this again!
If you want to make is small and unobtrusive, use the HTML editor and paste this at the top:
“<p style=”font-size:8pt;margin-top:-3px;margin-bottom:3px;”>session 1</p>”
In theory you could hide it in an html class if you did not want it to be visible. It really doesn’t matter what it looks like, just that it is there at the top.
Step 2:
In the Google sheet, you will find the first sheet, called “Dates”, where your course data will load. The sheets following are where you will store the lists of dates for the class sessions. Use the ones I created or create your own. You can add or delete as many as you want, but each one must be titled “sessionDates#”, with the ‘#’ being replaced by a number.
In each of those sheets, place a title in cell 1A of each sheet. This title will not affect anything in Canvas, but will ensure you use the correct list later.
As an example, I used the following titles:
“MWF” for my Monday/Wednesday/Friday classes
“TR” for my Tuesday/Thursday classes
“Full Term Weekly (Mondays)” for my online classes that have assignments due every week.
“2nd Half Term Online (Mondays)” for my online classes that only run half a term.
Fill column 2 with the dates of each class in the semester. Use the format “(d)d/mm/yyyy”.
Column 1 simply keeps a tally of the number of class sessions, so make sure that list is as long as the list in column 2.
Step 3:
Follow James’ instructions for connecting to a course and loading the data. You should notice the first column now contains your session numbers.
Notice in my screenshot how session 1 only has 1 class plan, but day 2 has a class plan, 2 assignments, and a syllabus quiz. Those four will all end up with the same due date (2nd day of classes).
Step 4:
From the Canvas menu, select “Apply Session Dates”
You will be presented with a dialog box with your options:
- Which set of session dates you want to apply (BLUE in the screenshot below). These are the lists from the other sheets and will use the titles you used in each sheet.
- Which column you want to alter (YELLOW). You can choose whether to apply the new session dates to the due date, available date, or one of the other date options.
- Whether to change the TIME along with the dates (RED). If you keep ‘no’ checked, all of the changed dates will keep their original due times. If you choose yes, you will be able to select a new time which will be applied to ALL assignments.
- The obvious cancel and submit buttons. Once you click ‘submit’, the dialog box will go away and you will see all of the dates in your selected column change to your new semester dates.
Step 5:
I recommend looking over the dates and then looking over them again just to make sure. There is one great thing about this method: If you make a mistake like entering an incorrect date in a list, you can just do it again after you fix the list! Because your session ‘hooks’ are permanent, you will never lose the possibility of bulk altering the dates again.
From the Canvas menu, select “Save Due Dates”. It will take a few minutes but the new dates will show up in your course. You can easily look in the calendar to make sure they are lined up exactly where you wanted them to be.
Step 6:
Repeat for as many courses as you need. Now that you’ve entered the session numbers in Canvas and the semester dates in google, it only takes a couple minutes to update a course. This saves me at least 6 hours of work each semester.
From here on out, the ONLY place you have to edit the dates for your courses is in this one spreadsheet in the session date lists. Then you can apply them to all of your courses in just a few minutes. Woohoo!
I hope some of you find this useful!
Let me know of any issues or requests. I will do my best to help.