Note: for the latest "state" of the template spreadsheet, see here. This may be especially helpful when specifying environment variables.
- [feature] Added "Flush Gradescope" functionality. Sometimes, extensions aren't properly applied to Gradescope, due to a variety of issues: invalid email/password combination, inaccurate due dates that are changed after-the-fact, assignment URL's that have been added after extensions have already been approved (e.g. for the case in which a student, at the beginning of the semester, requests an extension on all assignments), or some other Gradescope internal error. In these cases, we want a way to "flush" current extension state onto Gradescope. The updated Google Apps Script Code adds a "Flush Gradescope" button to the drop-down menu. If you update your "Roster" sheet to have a
flush_gradescope
column (with data validation for all of that column's rows set to "Checkboxes"), then selecting "Actions" => "Flush Gradescope" will iteratively go through each selected student record, apply all of their extensions to Gradescope, and send a Slack message on job completi
- [feature] Added support for an optional
hard_due_date
column on the Assignments tab for classes that want to specify a designated hard due date beyond which extensions for a particular assignment will not be granted. Approved extensions will be granted to the earlier of (original due date + # extension days, hard due date). If the hard due date is not set, when applying an extension to Gradescope, the hard due date will be updated to match the new assignment deadline.
- [feature] Added support for optional
knows_assignments
form field (classes that don't want to support student support meetings through this system can delete all student support meeting related questions) - [feature] Added support for optional
has_partner
form field (classes that don't have partner assignments at all can safely delete all form-related questions) - [feature] Added support for optional
due_date
column on the Assignments tab (for classes that don't know all of their due dates ahead of time). Ifdue_date
is not specified, a warning will be displayed in Slack, but extensions may still be approved/auto-approved (students will recieve a TBD message in their email).
- [feature] Added support for >= 2 partners. To enable this, change your form to specify that students working with partners can include a comma-separated list of names and SID's if they say they're working with a partner.
- [refactor] Significantly refactored the internal base.
- [fix] Fixed a bug that was causing environment variables to be shared across classes (which was resulting in weird behavior with the
SLACK_TAG_LIST
environment variable specifically). - [feature] Added support for Gradescope extensions. See the template for how to configure this feature.
- [feature] Added two optional columns to the Roster sheet:
last_run_output
andlast_run_timestamp
. If these are set, they will be auto-filled with helpful information from each run when new form submissions are processed. - [refactor] Added signfiicant integration testing.
- [update] Slightly tweaked the wording of Slack messages to make them more approval-friendly ("An extension request needs review" vs. "An extension request could not be auto-approved").
-
[feature] It's no longer necessary to add all students to your
Roster
sheet ahead of time. We recieved feedback that it's difficult to keep the roster updated through adds/drops/swaps/etc., so we migrated to an on-demand model, where students are inserted into the roster only when they submit an extension request. If they submit multiple, their existing roster entry is updated in-place. -
[update] Student names are no longer used in sending emails (we start emails with "Hi," instead of "Hi [name],"). We recieved feedback that many students' official names aren't the names that they go by, so we migrated to a more general email greeting. This effectively makes the
name
column on theRoster
optional.
- [feature] If a
last_updated
column is present on theRoster
sheet, this tool will write the current timestamp to that column for row that it modifies in extension processing. This is useful when processing extensions manually (just sort by thelast_updated
column). Feel free to add this column to theRoster
, and the tool will automatically detect it and start using it. - [feature] Retroactive extensions (extensions requested after an assignment is due) are now flagged for human review.
- [feature] Feel free to add a
SLACK_TAG_LIST
environment variable, with zero or more comma-separated lists of users who you'd like to tag in Slack messages that require manual approval. This is helpful in classes that have many auto-approvals (e.g. you can see all action-related items chronologically in your SlackMentions and Reactions
). - [update] Emails (instead of SID's) are now used to look up students & partners on the roster. We recommend keeping the SID field on your form as a fallback, just in case the student's email is not found. This effectively makes the
sid
column on theRoster
optional. - [migration] The migration from SendGrid to CS 162's mailserver is complete. The
SENDGRID_API_KEY
environment variable is no longer needed. You may want to reformat yourEMAIL_FROM
address to be in the form ofSender Name <[email protected]>
, so that email clients recognize and use the sender name. Note that your sender email can be any @berkeley.edu email.
- [fix] We noticed that the Form Template that we released to some classes had incorrect regex validation for the "# of Days" question. To fix this issue, on your form, for the validation of that question's input, set it to "Regular expression matches
\d+(,\d+)*
".