I need to produce a CSV file that lists which Courses have Quizzes.
# Checkes each course in the array course_ids[] # to see if it has any quizzes # it does not determine if the quizz is published or not # it will return TRUE for both published and unpublished quizzes import requests import csv import os # beta expires April 30th 2024 API_TOKEN = '...' #beta BASE_URL = 'https://...instructure.com/api/v1/' # Array of course IDs to check for quizzes course_ids = [2486,8500,8501,8502,1525] # Set up headers with Authorization token headers = { 'Authorization': 'Bearer ' + API_TOKEN, } # Function to check if a course contains any quizzes def course_has_quiz(course_id): # API endpoint to list quizzes in a specific course url = f"{BASE_URL}courses/{course_id}/quizzes" # Make a GET request to the Canvas API response = requests.get(url, headers=headers) # Check if the request was successful (status code 200) if response.status_code == 200: quizzes = response.json() return len(quizzes) > 0 else: print(f"Failed to retrieve quizzes for course {course_id}. Status code: {response.status_code}") return False # Function to get the next version number for the CSV file def get_next_version_number(): current_version = 0 files = os.listdir('.') for file in files: if file.startswith('course_quizzes_') and file.endswith('.csv'): try: version = int(file.split('_')[2].split('.')[0]) if version >= current_version: current_version = version + 1 except ValueError: pass return current_version # Export course data to CSV file with dynamic version number def export_course_data_to_csv(course_data): next_version = get_next_version_number() csv_filename = f'course_quizzes_{next_version:03d}.csv' with open(csv_filename, 'w', newline='') as csvfile: csv_writer = csv.writer(csvfile) csv_writer.writerow(['Course ID', 'Has Quiz']) for course_id, has_quiz in course_data.items(): csv_writer.writerow([course_id, has_quiz]) return csv_filename # Return the filename # Main function def main(): course_data = {} # Iterate over course IDs and check if each course has a quiz for course_id in course_ids: has_quiz = course_has_quiz(course_id) course_data[course_id] = has_quiz print(f"Checking course {course_id}") # Export course data to CSV file csv_filename = export_course_data_to_csv(course_data) print(f"Course data exported to {csv_filename}") if __name__ == "__main__": main()
Hello, I am using checkpoint discussions. When I see that I have some submissions in my To Do list to grade, I click on it, go into Speedgrader, and now have to search to see which students have posted or not. It used to designate which students had posts to grade so it was easy to just go to those students. Something has…
A teacher at my school set up her coursework category to "Drop the lowest score" in both Canvas and PowerSchool (we use both). At the end of the semester, 13 of her 78 students had different percentages, with 8 of those being corner cases, resulting different letter grades. And all of those scores were higher in Canvas. I…
I'm not sure that this is the right place to post about this, but I was wondering if anyone has a fix for how the scroll bar for the entire page covers the scroll bar for just a document viewed in Canvas. The scroll bar for a document will stay visible until one attempts to interact with it, at which point the bar for the…
Hi There, We are in the process of transitioning to Canvas this year and were wanting to connect with any other MYP schools to see how you setup Assignment and grading under your modules. Or you could guide us to any resources you may have.
After using Canvas for a while, I picked up a small habit that’s saved me some last-minute stress with written submissions. Even when drafts are original, longer explanations and summaries tend to reuse common phrasing, especially in research-heavy assignments. Before submitting, I usually do a quick cleanup pass to reduce…