Title: | API Wrapper for Google Classroom and Google Forms |
Version: | 1.0.0 |
Description: | This is a Google Forms and Google Classroom API Wrapper for R for managing Google Classrooms from R. The documentation for these APIs is here https://developers.google.com/forms/api/guides . |
License: | GPL-3 |
URL: | https://github.com/datatrail-jhu/rgoogleclassroom |
BugReports: | https://github.com/datatrail-jhu/rgoogleclassroom/issues |
Imports: | httr, jsonlite, purrr, R6, assertthat, lubridate, magrittr, openssl, stringr, dplyr, readr, rprojroot, tibble, tidyr |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
Suggests: | testthat (≥ 3.0.0), knitr |
Config/testthat/edition: | 3 |
VignetteBuilder: | knitr |
NeedsCompilation: | no |
Packaged: | 2025-03-25 18:47:45 UTC; candacesavonen |
Author: | Candace Savonen [cre, aut] |
Maintainer: | Candace Savonen <csavonen@fredhutch.org> |
Depends: | R (≥ 3.5.0) |
Repository: | CRAN |
Date/Publication: | 2025-03-25 20:30:02 UTC |
Pipe operator
Description
See magrittr::%>%
for details.
Usage
lhs %>% rhs
Arguments
lhs |
A value or the magrittr placeholder. |
rhs |
A function call using the magrittr semantics. |
Value
The result of calling 'rhs(lhs)'.
Archive a Google Classroom Course
Description
Archive a Google Classroom Course
Usage
archive_course(course_id)
Arguments
course_id |
ID of the archived course you wish to delete |
Use secrets to Authorize R package to access Google classroom API
Description
This is a function to authorize the R package to access the Googleclassroom API. If no client.id and client.secret is provided, the package would provide predefined values.
Usage
auth_from_secret(access_token, refresh_token)
Arguments
access_token |
Access token can be obtained from running authorize interactively: token <-authorize(); token$credentials$access_token |
refresh_token |
Refresh token can be obtained from running authorize interactively: token <-authorize(); token$credentials$refresh_token |
Value
OAuth token saved to the environment so the package can use the users' Google data
Examples
## Not run:
token <- authorize()
auth_from_secret(
token$credentials$access_token,
token$credentials$refresh_token
)
## End(Not run)
Authorize R package to access Google classroom API
Description
This is a function to authorize the R package to access the Googleclassroom API interactively.
Usage
authorize(token = NULL, cache = FALSE, ...)
Arguments
token |
an output from oauth2.0_token to set as the authentication token. |
cache |
Should the token be cached as an .httr-oauth file? |
... |
additional arguments to send to oauth2.0_token |
Value
OAuth token saved to the environment so the package can use the users' Google data
Examples
## Not run:
authorize()
## End(Not run)
Path to bad example quiz
Description
Path to bad example quiz
Usage
bad_quiz_path()
Value
The file path to an example bad quiz included in the package that will fail the quiz checks.
Examples
quiz_path <- bad_quiz_path()
Check all quiz questions
Description
Takes output from [parse_quiz] and runs checks on each question in a quiz by calling [check_question] for each question. First splits questions into their own data frame. Returns a list of messages/warnings about each question's set up.
Usage
check_all_questions(
quiz_specs,
quiz_name = NA,
verbose = TRUE,
ignore_coursera = TRUE
)
Arguments
quiz_specs |
quiz_specs which is output from [parse_quiz]. |
quiz_name |
The name of the quiz being checked. |
verbose |
Whether progress messages should be given. |
ignore_coursera |
Coursera doesn't like '!' or ':' in the quizzes. Do not convert quizzes to coursera and ignore ! and : in question prompts that would not be allowed in Leanpub quizzes when converted to a Coursera quiz. Default is to ignore Coursera compatibility. |
Value
A list of the output from [check_question] with messages/warnings regarding each question and each check.
Examples
## Not run:
# Using good quiz md example
quiz_path <- good_quiz_path()
good_quiz <- readLines(quiz_path)
good_quiz_specs <- parse_quiz(good_quiz)
good_quiz_checks <- check_all_questions(good_quiz_specs)
# Using bad quiz md example
bad_quiz <- readLines(bad_quiz_path())
bad_quiz_specs <- parse_quiz(bad_quiz)
bad_quiz_checks <- check_all_questions(bad_quiz_specs)
## End(Not run)
Check Quiz Question Set Up
Description
Check quiz question set up to see if it is compliant with Leanpub and Coursera needs. Based off of [Markua guide](https://leanpub.com/markua/read#leanpub-auto-quizzes-and-exercises). Is called by [check_all_questions] and run for each question.
Usage
check_question(
question_df,
quiz_name = NA,
verbose = TRUE,
ignore_coursera = TRUE
)
Arguments
question_df |
Which is an individual question's data frame after being parse from |
quiz_name |
The name of the quiz the question is from |
verbose |
Whether progress messages should be given |
ignore_coursera |
Coursera doesn't like '!' or ':' in the quizzes. Do not convert quizzes to coursera and ignore ! and : in question prompts that would not be allowed in Leanpub quizzes when converted to a Coursera quiz. Default is to ignore Coursera compatibility |
Value
A list of messages/warnings regarding each check for the given question.
Examples
## Not run:
# Use readLines to read in a quiz
quiz_path <- good_quiz_path()
quiz_lines <- readLines(quiz_path)
# Use group_split to get the questions
questions_df <- parse_quiz(quiz_lines)$data %>%
dplyr::group_split(question)
good_quiz_checks <- check_question(questions_df[[2]])
## End(Not run)
Check Quiz
Description
For a file path to a quiz, check whether it is properly formatted for Leanpub.
Usage
check_quiz(quiz_path, verbose = TRUE, ignore_coursera = TRUE)
Arguments
quiz_path |
A file path to a quiz markdown file |
verbose |
print diagnostic messages? TRUE/FALSE |
ignore_coursera |
Coursera doesn't like '!' or ':' in the quizzes. Do not convert quizzes to coursera and ignore ! and : in question prompts that would not be allowed in Leanpub quizzes when converted to a Coursera quiz. Default is to ignore Coursera compatibility |
Value
A list of checks. "good" means the check passed. Failed checks will report where it failed.
Examples
## Not run:
# Take a look at a good quiz's checks:
quiz_path <- good_quiz_path()
good_checks <- check_quiz(quiz_path)
# Take a look at a failed quiz's checks:
quiz_path <- bad_quiz_path()
failed_checks <- check_quiz(quiz_path)
## End(Not run)
Check Quiz Attributes
Description
Check Quiz Attributes
Usage
check_quiz_attributes(quiz_specs, quiz_name = NULL, verbose = TRUE)
Arguments
quiz_specs |
The output from [parse_quiz]. |
quiz_name |
A character string indicating the name of the quiz being checked. |
verbose |
Would you like progress messages? TRUE/FALSE |
Value
A logical
Check all quizzes' formatting for Leanpub
Description
Check all quizzes' formatting for Leanpub
Usage
check_quiz_dir(
path = ".",
quiz_dir = "quizzes",
output_dir = "check_reports",
resources_dir = "resources",
report_all = FALSE
)
Arguments
path |
path to the bookdown or quarto course repository, must have a '.github' folder which will be used to establish the top of the repo. |
quiz_dir |
A relative file path to the folder (existing or not) that contains the quizzes in Leanpub format. Default is "quizzes". |
output_dir |
A relative file path to the folder (existing or not) that the output check file should be saved to. Default is "check_reports" |
resources_dir |
A relative file path to the folder (existing or not) that the ignore_urls.txt file and exclude_files.txt will be found. Default is "resources". If no ignore_urls.txt file and exclude_files.txt files are found, we will download one. |
report_all |
Should all URLs that were tested be returned? Default is FALSE meaning only broken URLs will be reported in the url_checks.tsv file. |
Value
A file will be saved that lists the broken URLs will be saved to the specified output_dir.
Examples
## Not run:
rmd_dir <- setup_ottr_template(dir = ".", type = "rmd", render = FALSE)
check_quiz_dir(rmd_dir)
# If there are broken URLs they will be printed in a list at 'question_error_report.tsv'
qmd_dir <- setup_ottr_template(dir = ".", type = "quarto", render = FALSE)
check_quiz_dir(qmd_dir)
## End(Not run)
Check a question's attributes
Description
This is ran automatically by [check_all_questions] for all questions. It checks that the attributes specified are accepted ones by Leanpub.
Usage
check_quiz_question_attributes(question_df, quiz_name = NULL, verbose = TRUE)
Arguments
question_df |
a data.frame obtained from [parse_quiz_df] and dplyr::group_split(question). |
quiz_name |
inherited from parse |
verbose |
print diagnostic messages |
Value
Will return a warning for any quiz question attributes used that are not supported.
Check all quizzes in a directory
Description
Check the formatting of all quizzes in a given directory.
Usage
check_quizzes(
path = ".",
quiz_dir = "quizzes",
write_report = TRUE,
verbose = TRUE,
ignore_coursera = TRUE
)
Arguments
path |
path to the top of course repository (looks for .github folder) |
quiz_dir |
A path to a directory full of quizzes that should all be checked with [check_all_quizzes]. |
write_report |
TRUE/FALSE save warning report to a CSV file? |
verbose |
print diagnostic messages |
ignore_coursera |
Coursera doesn't like '!' or ':' in the quizzes. Do not convert quizzes to coursera and ignore ! and : in question prompts that would not be allowed in Leanpub quizzes when converted to a Coursera quiz. Default is to ignore Coursera compatibility |
Value
A list checks performed on each quiz
Examples
## Not run:
## Make a temporary quiz directory
quiz_dir <- dirname(good_quiz_path())
## Now check the quizzes in that directory
all_quiz_results <- check_quizzes(quiz_dir = quiz_dir)
## End(Not run)
Commit changes to a Google form
Description
Commit changes to a Google form
Usage
commit_to_form(form_id, google_forms_request, quiet = FALSE)
Arguments
form_id |
The id of the google form to be updated |
google_forms_request |
The google slide request to be applied to the slides |
quiet |
TRUE/FALSE you'd like a progress message? |
Make a copy of an existing form
Description
Make a copy of an existing form
Usage
copy_form(form_id, new_name = NULL, quiet = FALSE)
Arguments
form_id |
The form_id that is desired to be copied. |
new_name |
What should the new file name for the copied file be? |
quiet |
TRUE or FALSE whether messages should be printed out. |
Examples
## Not run:
#'
# Make the form
form_info <- copy_form(form_id = "https://docs.google.com/forms/d/someformidhere/edit",
new_name = "copied form")
## End(Not run)
Create a new course
Description
Create a new course
Usage
create_course(owner_id = get_owner_id()$id, name = NULL)
Arguments
owner_id |
The ownerId to use to create the course. Will attempt to retrieve ownerId based on credentials with get_owner_id() |
name |
Name of the new course. Required. |
Examples
## Not run:
owner_id <- get_owner_id()
course_df <- create_course(owner_id, name = "New course")
## End(Not run)
Create a new coursework
Description
Create a new coursework
Usage
create_coursework(
course_id = NULL,
topic_id = NULL,
publish = FALSE,
title = NULL,
work_type = "ASSIGNMENT",
due_date = NULL,
description = NULL,
link = NULL
)
Arguments
course_id |
Course id of where to make the new coursework. Can find from end of URL e.g. "https://classroom.google.com/c/COURSE_ID_IS_HERE" |
topic_id |
topic ID to be looked for. |
publish |
TRUE/FALSE, automatically publish the coursework upon posting? Default is to be posted as a draft (students will not see it until you click Post). |
title |
Name of new coursework. Required. |
work_type |
Currently only supported work type is ASSIGNMENT. |
due_date |
Required Due date for new coursework, must be given in year-month-day format. |
description |
Description of new coursework. Is a string |
link |
A url to an associated resource for the coursework being made. |
Examples
## Not run:
topic_id <- get_topic_list("604042323237")$topic$topicId[1]
course_id <- get_course_list()$courses$id[1]
create_coursework(course_id, topic_id,
title = "a new quiz", due_date = "2025-12-1",
description = "blah blah", link = "https://www.datatrail.org/"
)
## End(Not run)
Create a new form
Description
Create a new form
Usage
create_form(title = NULL, document_title = "new_form", description = "")
Arguments
title |
The title for the new form. Required as a string. |
document_title |
The title for the form file that will be stored in Google Drive |
description |
The description for the new form as a string. |
Examples
## Not run:
#'
# Make the form
form_info <- create_form(
title = "A great quiz",
description = "This quiz is tricky"
)
## End(Not run)
Create a new material
Description
Create a new material
Usage
create_material(
course_id = NULL,
topic_id = NULL,
publish = FALSE,
title = NULL,
description = NULL,
link = NULL
)
Arguments
course_id |
Course id of where to make the new materials. Can find from end of URL e.g. "https://classroom.google.com/c/COURSE_ID_IS_HERE" |
topic_id |
topic ID to be looked for. |
publish |
TRUE/FALSE, automatically publish the coursework upon posting? Default is to be posted as a draft (students will not see it until you click Post). |
title |
Name of new material |
description |
A description for the new material |
link |
A URL to go with the associated material |
Examples
## Not run:
course_id <- get_course_list()$courses$id[3]
topic_id <- get_topic_list(course_id)$topic$topicId[1]
create_material(course_id, topic_id, title = "new material")
## End(Not run)
Create a multiple choice question
Description
Create a multiple choice question
Usage
create_multiple_choice_question(
form_id = NULL,
commit_to_form = TRUE,
required = FALSE,
question = NULL,
choice_vector = NULL,
shuffle_opt = FALSE,
correct_answer = NULL,
google_forms_request = NULL,
point_value = 1,
quiet = FALSE,
location = 0
)
Arguments
form_id |
The id of the google form to be updated |
commit_to_form |
Whether or not the request should be committed. If need to build the request further, you will want to say FALSE. Default is TRUE |
required |
TRUE or FALSE is this a required question? Default is not required. |
question |
a string that is what the question should say |
choice_vector |
a character vector of the choices that should be given for this question |
shuffle_opt |
TRUE or FALSE options should be shuffled? default is FALSE |
correct_answer |
The index that corresponds to the correct answer in the 'choice_vector' supplied |
google_forms_request |
A google forms request object. If not supplied, it will be created new. |
point_value |
An integer representing how many points |
quiet |
TRUE/FALSE you'd like a progress message? |
location |
Where should the new question be added |
Examples
## Not run:
create_multiple_choice_question(
form_id = "12345",
question = "What answer do you want?",
choice_vector = c("A", "B", "C", "D"),
correct_answer = 3,
shuffle_opt = TRUE
)
## End(Not run)
Create a quiz at a course
Description
Create a quiz at a course
Usage
create_quiz(
course_id = NULL,
quiz_title = NULL,
quiz_description = NULL,
topic_id = NULL,
coursework_title = "none",
work_type = "ASSIGNMENT",
due_date = NULL,
assignment_description = ""
)
Arguments
course_id |
A course id where the quiz should be created |
quiz_title |
A string indicating the title for the quiz |
quiz_description |
A description for the quiz that will be made |
topic_id |
Optional - a topic Id where the quiz will be posted |
coursework_title |
a string that will be what the coursework title |
work_type |
Currently only supported work type is ASSIGNMENT. |
due_date |
A due date for this quiz, in year-month-day format |
assignment_description |
The description that will be given for the assignment |
Examples
## Not run:
course_id <- get_course_list()$courses$id[1]
topic_id <- get_topic_list(course_id)$topic$topicId[1]
create_quiz(course_id,
quiz_title = "new quiz", quiz_description = "This is a great quiz",
topic_id = topic_id, due_date = "2025-12-1"
)
## End(Not run)
Create a text question
Description
This function makes a google request object that will be able to be posted with a batch request and and added to a Google form to edit it.
Usage
create_text_question(
form_id = NULL,
commit_to_form = TRUE,
required = FALSE,
question = NULL,
correct_answer = NULL,
google_forms_request = NULL,
point_value = 1,
location = 0,
quiet = FALSE
)
Arguments
form_id |
The id of the google form to be updated |
commit_to_form |
Whether or not the request should be committed. If need to build the request further, you will want to say FALSE. Default is TRUE |
required |
TRUE or FALSE is this a required question? Default is not required. |
question |
a string that is what the question should say |
correct_answer |
A string that matches exactly what would be considered a correct |
google_forms_request |
A google forms request object. If not supplied, it will be created new. |
point_value |
An integer representing how many points |
location |
Where should the new question be added |
quiet |
TRUE/FALSE you'd like a progress message? |
Examples
## Not run:
create_text_question(
form_id = "12345",
question = "Put text here that is for filling in the blank",
point_value = 1
)
## End(Not run)
Create a new topic
Description
Create a new topic
Usage
create_topic(course_id = NULL, name = NULL)
Arguments
course_id |
Course id of where to make the new topic. Can find from end of URL e.g. "https://classroom.google.com/c/COURSE_ID_IS_HERE" |
name |
Name of new topic. Required. |
Handle and parse a due_date
Description
Handle and parse a due_date
Usage
date_handler(due_date)
Arguments
due_date |
A string that is a date in format of year-month-day |
Examples
## Not run:
date_handler("2025-12-1")
## End(Not run)
Delete a Google Classroom Course
Description
Delete a Google Classroom Course
Usage
delete_course(course_id)
Arguments
course_id |
ID of the archived course you wish to delete |
Delete a Google Classroom Coursework
Description
Delete a Google Classroom Coursework
Usage
delete_coursework(course_id, coursework_id)
Arguments
course_id |
Course id of where to make the new coursework. Can find from end of URL e.g. "https://classroom.google.com/c/COURSE_ID_IS_HERE" |
coursework_id |
ID of the archived course you wish to delete |
Extract meta fields from a tag
Description
Extract meta fields from a tag
Usage
extract_meta(tags)
Arguments
tags |
A single tag or vector of tags to extract the fields from. |
Value
A named vector indicating the field and entry associated with it.
Examples
## Not run:
### Simple example
tag <- "{quiz, id: quiz_name_here, attempts: 10}"
# Extract metadata tags
meta <- extract_meta(tag)
### Example using a file
quiz_path <- good_quiz_path()
quiz_lines <- readLines(quiz_path)
# Put this in a data.frame so we can identify the content
quiz_df <- parse_quiz_df(quiz_lines)
# Extract the tags
tags <- quiz_df %>%
dplyr::filter(type == "tag") %>%
dplyr::pull("original")
# Extract metadata tags
meta <- extract_meta(tags)
## End(Not run)
Get list of courses
Description
Get list of courses
Usage
get_course_list(owner_id = get_owner_id()$id)
Arguments
owner_id |
owner_id to retrieve course listings from |
Examples
## Not run:
owner_id <- get_owner_id()
course_df <- get_course_list(owner_id)
## End(Not run)
Get Google Classroom Course Properties
Description
Get Google Classroom Course Properties
Usage
get_course_properties(course_id)
Arguments
course_id |
ID of the course you wish to retrieve information from |
Get list of courseworks for a course
Description
Get list of courseworks for a course
Usage
get_coursework_list(course_id)
Arguments
course_id |
ID of the course to retrieve the courseworks from |
Examples
## Not run:
course_id <- get_course_list()$courses$id[1]
get_coursework_list(course_id)
## End(Not run)
Get Google Classroom Course Properties
Description
Get Google Classroom Course Properties
Usage
get_coursework_properties(course_id, coursework_id)
Arguments
course_id |
ID of the course you wish to retrieve information about a particular coursework |
coursework_id |
ID of the coursework you wish to retrieve information about |
Get list of files from a Google Shared Drive
Description
Get list of files from a Google Shared Drive
Usage
get_drive_file_list(drive_id)
Arguments
drive_id |
ID of the drive to retrieve a list of files from |
Generate endpoint for the Google classroom API
Description
Generate endpoint for the Google classroom API
Usage
get_endpoint(
type_of_endpoint = "classroom.endpoint.user",
course_id = NULL,
topic_id = NULL,
coursework_id = NULL,
materials_id = NULL,
form_id = NULL
)
Arguments
type_of_endpoint |
Type of endpoint to convert to url |
course_id |
(Optional) ID of the google course to be affected/retrieved |
topic_id |
(Optional) ID of the topic to be affected/retrieved |
coursework_id |
(Optional) ID of the coursework to be affected/retrieved |
materials_id |
(Optional) ID of the material to be affected/retrieved |
form_id |
(Optional) ID of the form to be affected/retrieved |
Value
A url that is the endpoint for the API call
Get Google Form Properties
Description
Get Google Form Properties
Usage
get_form_properties(form_id = NULL, form_url = NULL)
Arguments
form_id |
Google form Id |
form_url |
Google form url |
Examples
## Not run:
# Make the form
form_info <- create_form(title = "A great quiz", description = "This quiz is tricky")
# Get info about the form
form_info <- get_form_properties(form_id = form_info$formId)
## End(Not run)
Get form responses
Description
Get form responses
Usage
get_form_responses(form_id = NULL, form_url = NULL)
Arguments
form_id |
The id of the google form to be updated |
form_url |
Google form url |
Examples
## Not run:
form_url <- "https://docs.google.com/forms/d/1woWtLVviIhrwb-NYEjVMO_IV2-62vOhaS4N0/edit#responses"
get_form_responses(form_url = form_url)
## End(Not run)
Get list of forms used in a course as quizzes
Description
Get list of forms used in a course as quizzes
Usage
get_linked_quizzes_list(course_id)
Arguments
course_id |
ID of the course to retrieve the linked quizzes from |
Examples
## Not run:
course_id <- get_course_list()$courses$id[1]
quiz_list <- get_linked_quizzes_list(course_id)
## End(Not run)
Get list of materials for a course
Description
Get list of materials for a course
Usage
get_materials_list(course_id)
Arguments
course_id |
ID of the course |
Examples
## Not run:
course_id <- get_course_list()$courses$id[1]
materials_df <- get_materials_list(course_id)
## End(Not run)
Get Google Classroom Materials properties
Description
Get Google Classroom Materials properties
Usage
get_materials_properties(course_id, materials_id)
Arguments
course_id |
ID of the course |
materials_id |
The material id you wish to retrieve |
Examples
## Not run:
course_id <- get_course_list()$courses$id[3]
materials_id <- get_materials_list(course_id)$material_id$courseWorkMaterial$id[1]
get_materials_properties(course_id, materials_id)
## End(Not run)
Get ownerId based on credentials
Description
Get ownerId based on credentials
Usage
get_owner_id()
Get list of topics for a course
Description
Get list of topics for a course
Usage
get_topic_list(course_id)
Arguments
course_id |
ID of the course you wish to retrieve a topic list from |
Examples
## Not run:
course_id <- get_course_list()$courses$id[1]
get_topic_list(course_id)
## End(Not run)
Get Google Classroom Topic Properties
Description
Get Google Classroom Topic Properties
Usage
get_topic_properties(course_id, topic_id)
Arguments
course_id |
ID of the course |
topic_id |
topic ID to be looked for. |
Path to good example quiz
Description
Path to good example quiz
Usage
good_quiz_path()
Value
The file path to an example good quiz included in the package that should pass the quiz checks.
Check if the object is a google forms request object
Description
Check if the object is a google forms request object
Usage
is.google_forms_request(x)
Arguments
x |
A google_forms_request object created from the rgoogleclassroom package |
Turn a form into a quiz
Description
Turn a form into a quiz
Usage
make_form_quiz(form_id)
Arguments
form_id |
The id of the google form to be updated into a Quiz |
Examples
## Not run:
# Make the form
form_info <- create_form(title = quiz_title)
# Now make it a quiz
make_form_quiz(form_id = form_info$formId)
## End(Not run)
Get file path to an example quiz
Description
Get file path to an example quiz
Usage
markdown_quiz_path()
Value
A file path to a markua markdown quiz example you can use for testing
Examples
## Not run:
# Find quiz path
quiz_path <- markdown_quiz_path()
## End(Not run)
Create Google Form Quiz from Markua quiz
Description
Takes a file path to a Markua formatted quiz and runs the steps to convert it to a Google Form Request and sends It to be a Google form quiz.
Usage
ottr_quiz_to_google(
quiz_path = NULL,
course_id = NULL,
quiz_title = NULL,
topic_id = NULL,
coursework_title = NULL,
form_id = NULL,
due_date = NULL,
make_new_quiz = FALSE,
copy_from_template_quiz = TRUE,
new_name = NULL,
assignment_description = "",
quiz_description = "",
output_path = NULL,
quiet = FALSE
)
Arguments
quiz_path |
file path to a markdown Markua quiz |
course_id |
An id for the course where this is to be published and linked. |
quiz_title |
The title for the quiz. If not supplied, it will attempt to be grabbed from the Markua doc |
topic_id |
topic ID that the quiz should be added under. |
coursework_title |
the title for the coursework to be created |
form_id |
form id where this quiz is to be published. Alternatively, if you want a new quiz to be made, you should set make_new_quiz = TRUE and leave this NULL. |
due_date |
A due date for this quiz, in year-month-day format |
make_new_quiz |
This can only be used if form_id is not specified. This will make a new quiz |
copy_from_template_quiz |
TRUE or FALSE the form supplied should be copied over and used as a template. |
new_name |
To be passed to 'copy_form' if 'copy_from_template_quiz' is TRUE. What the new file name should be called |
assignment_description |
The description that will be given for the assignment |
quiz_description |
The description that will be given for the quiz |
output_path |
Optional file path to save the question formatted data to |
quiet |
TRUE/FALSE you'd like a progress message? |
Examples
## Not run:
# Using quiz example
quiz_path <- markdown_quiz_path()
ottr_quiz_to_google(
markdown_quiz_path(),
course_id = "606463350924",
make_new_quiz = TRUE,
due_date = "2025-12-1"
)
## End(Not run)
Parse apart a tag
Description
Parse apart a tag
Usage
parse_q_tag(tag)
Arguments
tag |
A single tag to extract from |
Value
A named vector indicating the field and entry associated with it.
Examples
tag <- "{quiz, id: quiz_name_here, attempts: 10}"
parse_q_tag(tag)
Parse Quiz and Other Checking Functions
Description
Parse Quiz and Other Checking Functions
Extract lines of the quiz
Usage
parse_quiz(quiz_lines, quiz_name = NULL, verbose = FALSE)
extract_quiz(quiz_lines)
Arguments
quiz_lines |
A quiz's contents read in with readLines() |
quiz_name |
A character vector indicating the name of the quiz. |
verbose |
Would you like progress messages? TRUE/FALSE |
Value
A list of elements, including a 'data.frame' and metadata for questions
the lines of the quiz that actually contain of the content of the quiz.
Examples
quiz_lines <- c(
"{quiz, id: quiz_00_filename}",
"### Lesson Name quiz",
"{choose-answers: 4}",
"? What do you think?",
"",
"C) The answer to this one",
"o) Not the answer",
"o) Not the answer either",
"C) Another correct answer",
"m) Mandatory different answer",
"",
"{/quiz}"
)
quiz_specs <- parse_quiz(quiz_lines)
check_quiz_attributes(quiz_specs)
Parse quiz into a data.frame
Description
Parse quiz into a data.frame
Usage
parse_quiz_df(quiz_lines, remove_tags = FALSE)
Arguments
quiz_lines |
A character vector of the contents of the markdown file obtained from readLines() |
remove_tags |
TRUE/FALSE remove tags and empty lines? |
Value
A data frame containing a type column which indicates what type of line each is.
Examples
## Not run:
# Use readLines() to read in a quiz
quiz_path <- good_quiz_path()
quiz_lines <- readLines(quiz_path)
# Can use this to parse the quiz into a data.frame
quiz_df <- parse_quiz_df(quiz_lines)
## End(Not run)
Publish a Google Classroom CourseWork
Description
Publish a Google Classroom CourseWork
Usage
publish_coursework(course_id, coursework_id)
Arguments
course_id |
ID of the archived course you wish to delete |
coursework_id |
coursework ID of the coursework you wish to publish |
Handle and parse a time
Description
Handle and parse a time
Usage
time_handler(due_time = lubridate::hms("23:59:59"))
Arguments
due_time |
A string that is a date in format of year-month-day. Default is midnight. |
Examples
## Not run:
time_handler("21:30:59")
## End(Not run)
Translate Markua questions for submission to Google API
Description
Takes a Markua formatted quiz and translates it to something that can be sent to Google Forms API.
Usage
translate_questions_api(quiz_path, output_path = NULL)
Arguments
quiz_path |
The file path to a Markua formatted quiz to be translated to Google Forms API format |
output_path |
Optional file path to save the formatted data to a JSON file |
Value
A list of the output from check_question with messages/warnings regarding each question and each check.
Examples
## Not run:
# Using quiz example
quiz_path <- markdown_quiz_path()
parsed_questions <- translate_questions_api(quiz_path)
## End(Not run)
Create a multiple choice question
Description
Create a multiple choice question
Usage
update_form_settings(
form_id = NULL,
title = NULL,
description = NULL,
google_forms_request = NULL,
quiet = FALSE
)
Arguments
form_id |
The id of the google form to be updated |
title |
An updated title |
description |
An updated description |
google_forms_request |
A google forms request object. If not supplied, it will be created new. |
quiet |
TRUE/FALSE you'd like a progress message? |
Examples
## Not run:
update_form_settings(
form_id = "12345",
new_title = NULL,
new_description = NULL
)
## End(Not run)