not created by, affiliated with, or supported by Doist
Transferring assignments from your student Canvas account to your Todoist account couldn't be easier.
This project provides you with an easy way to transfer all of your assignments from a Canvas account into a Todoist account with appropraite due dates and assignment to auto-generated projects that match course names.
Easy run allows all configuration to be done inside of the program, avoiding the hassle of creating the config file directly. Just install the dependencies and follow the instructions on screen.
- Obtain your API Keys for Todoist and Canvas
- On Canvas desktop go to settings and click on
New Access Token
under Approved Integrations - On Todoist desktop go to settings and the API token will be listed under the
Integrations Tab
. You can also generate an application-specific token at https://developer.todoist.com/appconsole.html - Install required packages with
pip install -r requirements.txt
- Run
python easy_run.py
and follow up the prompts - A config.json file will be created with your selections so it can be run again in the future using the same keys and/or classes
❗ Every teacher uses Canvas slightly differently. You agree that it is YOUR responsibility to review Canvas regularly to ensure you are staying current.
Due Date Updates: The script will update due dates on tasks when the following conditions are met:
- The assignment in Canvas DOES have a due date
- The task in Todoist either does NOT have a due date, OR it has a due date that is LATER (in the future from) the Canvas Due Date..
It will not REMOVE adue dates from Todoist (even if they are removed in Canvas), so you can set an artifical 'due date' in Todoist for assignments with no due date. It will also not update due dates if the due date is set earier than the one in Canvas (allowing you to artifically 'move' due dates earlier, but not later)
Name or Assignment Changes: The script will not modify or remove Todist tasks retroactively, so if a teacher deletes or modifies an assignment, it will not be removed from Todoist. In the case of a name change, a new task would be created in Todoist with the new assignment name.
Graded Assignments: This script ignores any assignments once they are graded.
⚠️ This means that if a teacher enters "0" the assignment will be ignored, even if you have additional opportunities to submit it. Thus, it is recommended that you do not remove a task from Todoist until you have submitted it.
Submissions: This script assumes assignments with submissions do not need to be added.
⚡ You must keep track of any re-submissions or re-grades seperately; this script does not have logic to handle them as they show up as already "submitted" in the API.
Duplicate tasks: Tasks are tracked based on the the class name and assigment title within Canvas. The script does not delete or remove tasks. If a teacher renames an assignment, you will end up with two assignments in Todoist (one under the old name, one under the new name) - only the new one will be kept up to date with any date changes.
☝️ Every teacher uses Canvas differently - there are several options available to handle different things teachers do in Canvas (such as creating ungraded/unsubmittable assignments, locked assignments, etc).
I recommend synching all assignments at the beginning of the semester, then adjusting your settings to exclude ungraded and null assignments once they are fully added.
Q: Why are Priority numbers different?
A: The Todoist API Priority numbers go from 1 (Default) to 4 (Very Urgent), which is the opposite as the UI (https://developer.todoist.com/rest/v2/#create-a-new-task)
Q: What are null/unsubmittable assignments?
A: Teachers can set submission method for an assignment to "none" or "not graded". This filters out those assignments (since you can't actually submit them)
Q: What are locked assignments?
A: Teachers can lock assignments so they cannot be viewed or done. These locks can be because a module is not unlocked, or they can be set to unlock at a certain date. If the setting to not sync locked assignments is enabled, any assignment which will not be unlocked within the next 24 hours will not sync.
If you encounter any issues, please open an Issue with the appropriate data - I use this regularly for my classes to sync to Todoist (which is my work System of Record), please open an issue for any problems you encounter or questions you have!
Thanks to all the below for their contributions!
Scott Quach 💻 |
Jesse 💻 🐛 |
Andrei Cozma 🐛 |
Nassuel N. Valera 🐛 |
Luke Weiler 🐛 |
Caleb Stanford 🤔 🧑🏫 |