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)