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!
I need to produce a CSV file that lists which Courses have Quizzes.
Solved! Go to Solution.
# 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()
# 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()
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