diff --git a/01_gather_and_wrangle.R b/01_gather_and_wrangle.R
index 332119b..c7a126e 100644
--- a/01_gather_and_wrangle.R
+++ b/01_gather_and_wrangle.R
@@ -7,6 +7,8 @@
# Undertook this revision because the integratin of online and in-person workshops made Joel's script ineffective. Nonetheless, borrowed heavily from his previous work.
+# Run this script to harvest data from the SpringShare LibCal API.
+# This script is calle by `02_make_main_workshop_list.Rmd`
Sys.setenv(TZ="America/New_York")
library(rvest)
@@ -63,13 +65,4 @@ my_df <- my_df %>%
mutate(online_in_person_flyer = if_else(location == "Online", location, "In-Person"))
-for_goog_df <- my_df %>%
- select_if(is.character) %>%
- select(workshop_id, date, day = day_flyer, title, presenter, online_in_person = online_in_person_flyer,
- time = time_flyer, workshop_begins = begins_display, workshop_ends = ends_display,
- workshop_duration_minutes, description, registration_link, location)
-
-# my_df %>%
-# select(date, presenter, registration = registration_link, time, title, description) %>%
-# write_csv("../workflow_cdvs_AttendanceSheets/temp.csv")
diff --git a/02_make_main_workshop_list.Rmd b/02_make_main_workshop_list.Rmd
index 9b8a607..130b91f 100644
--- a/02_make_main_workshop_list.Rmd
+++ b/02_make_main_workshop_list.Rmd
@@ -1,19 +1,21 @@
---
-title: "Create CSV file of Future Workshop"
+title: "Create CSV file of Future Workshops"
subtitle: "Data are from the LibCal API, parsed by rvest and dplyr"
date: "`r Sys.Date()`"
output: html_notebook
---
-The is the RMD to Joel's rvestLibcalCode.R
+1. Run this at the beginning of the semester to generate the main workshop list
+1. Use this to generate the workshop flyer, for advertising
+1. This script depends on `01_gather_and_wrangle.R` to harvest the data
-Undertook this revision because the integratin of online and in-person workshops made Joel's script ineffective. Nonetheless, borrowed heavily from his previous work.
+## Release Notes
+
+- August 10, 2021: Undertook this revision because the integration of online and in-person workshops made Joel's script ineffective. Nonetheless, borrowed heavily from his previous work. The RMD migration of Joel's `rvestLibcalCode.R`
+
+## library packages
```{r message=FALSE, warning=FALSE}
-Sys.setenv(TZ="America/New_York")
-library(rvest)
-library(clock)
-library(tidyverse)
library(fs)
```
@@ -32,6 +34,18 @@ source("01_gather_and_wrangle.R", local = knitr::knit_global())
```
+## Wrangle Data
+
+```{r}
+for_goog_flyer_df <- my_df %>%
+ select_if(is.character) %>%
+ select(workshop_id, date, day = day_flyer, title, presenter, online_in_person = online_in_person_flyer,
+ time = time_flyer, workshop_begins = begins_display, workshop_ends = ends_display,
+ workshop_duration_minutes, description, registration_link, location)
+```
+
+
+
## Write output
Manually move, and rename, the google sheet into the proper CDVS google drive space.
@@ -44,12 +58,12 @@ fs::file_copy("output/workshops.csv",
write_csv(my_df, "output/workshops.csv")
-write_csv(for_goog_flyer_df, "output/forgoog_flyer.csv")
+write_csv(for_goog_flyer_df, "output/forgoog_flyer.csv")
```
## For Flyer -- Upload manully to Google Sheets.
-Upload to: `Google Drive > CDVS > Services > Workshops > [2021 Fall] > Planning`
+Manually upload `for_googflyer.csv` to: `Google Drive > CDVS > Services > Workshops > [2021 Fall] > Planning`
There are extraneous leading single apostrophes showing up in the uploaded data (i.e. on Google Drive, in the Sheet.) For now, instead of `gs4_create()`, upload the forgoog_flyer.csv file **manually** to Google Drive, then open the csv on Google Drive, and then "Open With" as a Sheet.
diff --git a/02_make_main_workshop_list.nb.html b/02_make_main_workshop_list.nb.html
index 8307075..9d49074 100644
--- a/02_make_main_workshop_list.nb.html
+++ b/02_make_main_workshop_list.nb.html
@@ -12,7 +12,7 @@
-
Create CSV file of Future Workshop
+Create CSV file of Future Workshops
@@ -210,7 +210,7 @@
-Create CSV file of Future Workshop
+Create CSV file of Future Workshops
Data are from the LibCal API, parsed by rvest and dplyr
2021-08-10
@@ -218,36 +218,27 @@ 2021-08-10
-The is the RMD to Joel’s rvestLibcalCode.R
-Undertook this revision because the integratin of online and in-person workshops made Joel’s script ineffective. Nonetheless, borrowed heavily from his previous work.
+
+- Run this at the beginning of the semester to generate the main workshop list
+- Use this to generate the workshop flyer, for advertising
+- This script depends on
01_gather_and_wrangle.R
to harvest the data
+
+
+
Release Notes
+
+- August 10, 2021: Undertook this revision because the integration of online and in-person workshops made Joel’s script ineffective. Nonetheless, borrowed heavily from his previous work. The RMD migration of Joel’s
rvestLibcalCode.R
+
+
+
+
library packages
-
-
Sys.setenv(TZ="America/New_York")
-library(rvest)
-library(clock)
-library(tidyverse)
-
-
-
Registered S3 methods overwritten by 'dbplyr':
- method from
- print.tbl_lazy
- print.tbl_sql
--- Attaching packages ----------------------------------------------------------------------------- tidyverse 1.3.1 --
-v ggplot2 3.3.5 v purrr 0.3.4
-v tibble 3.1.2 v dplyr 1.0.7
-v tidyr 1.1.3 v stringr 1.4.0
-v readr 1.4.0 v forcats 0.5.1
--- Conflicts -------------------------------------------------------------------------------- tidyverse_conflicts() --
-x dplyr::filter() masks stats::filter()
-x readr::guess_encoding() masks rvest::guess_encoding()
-x dplyr::lag() masks stats::lag()
-
library(fs)
+
Get Data
Ingest data from web page (LibCal API) & make a column headers template for the attendance sheets that will be written to Google.
@@ -258,12 +249,26 @@
harvest webpage data from LibCal API
+
+
Wrangle Data
+
+
+
+
for_goog_flyer_df <- my_df %>%
+ select_if(is.character) %>%
+ select(workshop_id, date, day = day_flyer, title, presenter, online_in_person = online_in_person_flyer,
+ time = time_flyer, workshop_begins = begins_display, workshop_ends = ends_display,
+ workshop_duration_minutes, description, registration_link, location)
+
+
+
+
Write output
Manually move, and rename, the google sheet into the proper CDVS google drive space.
-
+
fs::dir_create("output")
fs::file_copy("output/workshops.csv",
@@ -271,14 +276,14 @@ Write output
write_csv(my_df, "output/workshops.csv")
-write_csv(for_goog_flyer_df, "output/forgoog_flyer.csv")
+write_csv(for_goog_flyer_df, "output/forgoog_flyer.csv")
For Flyer – Upload manully to Google Sheets.
-
Upload to: Google Drive > CDVS > Services > Workshops > [2021 Fall] > Planning
+
Manually upload for_googflyer.csv
to: Google Drive > CDVS > Services > Workshops > [2021 Fall] > Planning
There are extraneous leading single apostrophes showing up in the uploaded data (i.e. on Google Drive, in the Sheet.) For now, instead of gs4_create()
, upload the forgoog_flyer.csv file manually to Google Drive, then open the csv on Google Drive, and then “Open With” as a Sheet.
{r eval=FALSE, include=FALSE}
# googlesheets4::gs4_create("Master Workshop list for Semester", sheets = list(sname = my_df))
@@ -289,7 +294,7 @@ For Flyer – Upload manully to Google Sheets.
-LS0tDQp0aXRsZTogIkNyZWF0ZSBDU1YgZmlsZSBvZiBGdXR1cmUgV29ya3Nob3AiDQpzdWJ0aXRsZTogIkRhdGEgYXJlIGZyb20gdGhlIExpYkNhbCBBUEksIHBhcnNlZCBieSBydmVzdCBhbmQgZHBseXIiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGUgaXMgdGhlIFJNRCB0byBKb2VsJ3MgcnZlc3RMaWJjYWxDb2RlLlINCg0KVW5kZXJ0b29rIHRoaXMgcmV2aXNpb24gYmVjYXVzZSB0aGUgaW50ZWdyYXRpbiBvZiBvbmxpbmUgYW5kIGluLXBlcnNvbiB3b3Jrc2hvcHMgbWFkZSBKb2VsJ3Mgc2NyaXB0IGluZWZmZWN0aXZlLiAgTm9uZXRoZWxlc3MsIGJvcnJvd2VkIGhlYXZpbHkgZnJvbSBoaXMgcHJldmlvdXMgd29yay4NCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NClN5cy5zZXRlbnYoVFo9IkFtZXJpY2EvTmV3X1lvcmsiKQ0KbGlicmFyeShydmVzdCkNCmxpYnJhcnkoY2xvY2spDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZnMpDQpgYGANCg0KIyMgR2V0IERhdGENCg0KSW5nZXN0IGRhdGEgZnJvbSB3ZWIgcGFnZSAoTGliQ2FsIEFQSSkgJiBtYWtlIGEgY29sdW1uIGhlYWRlcnMgdGVtcGxhdGUgZm9yIHRoZSBhdHRlbmRhbmNlIHNoZWV0cyB0aGF0IHdpbGwgYmUgd3JpdHRlbiB0byBHb29nbGUuDQoNCiMjIyBoYXJ2ZXN0IHdlYnBhZ2UgZGF0YSBmcm9tIExpYkNhbCBBUEkNCg0KdGhpcyBuZXh0IENPREUgQ0hVTksgaXMgRElTQUJMRUQsIGJ1dCBkZXNpZ25lZCB0byByZXJ1biB0aGUgaGFydmVzdCBzY3JpcHQNCg0KDQpgYGB7ciBnZXQgd3JhbmdsZWQgZGF0YSwgaW5jbHVkZT1GQUxTRX0NCnNvdXJjZSgiMDFfZ2F0aGVyX2FuZF93cmFuZ2xlLlIiLCBsb2NhbCA9IGtuaXRyOjprbml0X2dsb2JhbCgpKQ0KIyBvciBzeXMuc291cmNlKCJ5b3VyLXNjcmlwdC5SIiwgZW52aXIgPSBrbml0cjo6a25pdF9nbG9iYWwoKSkNCmBgYA0KDQoNCiMjIFdyaXRlIG91dHB1dA0KDQpNYW51YWxseSBtb3ZlLCBhbmQgcmVuYW1lLCB0aGUgZ29vZ2xlIHNoZWV0IGludG8gdGhlIHByb3BlciBDRFZTIGdvb2dsZSBkcml2ZSBzcGFjZS4NCg0KYGBge3J9DQpmczo6ZGlyX2NyZWF0ZSgib3V0cHV0IikNCg0KZnM6OmZpbGVfY29weSgib3V0cHV0L3dvcmtzaG9wcy5jc3YiLCANCiAgICAgICAgICAgICAgZ2x1ZTo6Z2x1ZSgib3V0cHV0L3dvcmtzaG9wcy5iYWsue1N5cy5EYXRlKCl9Lntyb3VuZChTeXMuZ2V0cGlkKCkgKiBydW5pZigxKSl9LmNzdiIpKQ0KDQp3cml0ZV9jc3YobXlfZGYsICJvdXRwdXQvd29ya3Nob3BzLmNzdiIpDQoNCndyaXRlX2Nzdihmb3JfZ29vZ19mbHllcl9kZiwgIm91dHB1dC9mb3Jnb29nX2ZseWVyLmNzdiIpDQpgYGANCg0KIyMgRm9yIEZseWVyIC0tIFVwbG9hZCBtYW51bGx5IHRvIEdvb2dsZSBTaGVldHMuICANCg0KVXBsb2FkIHRvOiAgYEdvb2dsZSBEcml2ZSA+IENEVlMgPiBTZXJ2aWNlcyA+IFdvcmtzaG9wcyA+IFsyMDIxIEZhbGxdID4gUGxhbm5pbmdgDQoNClRoZXJlIGFyZSBleHRyYW5lb3VzIGxlYWRpbmcgc2luZ2xlIGFwb3N0cm9waGVzIHNob3dpbmcgdXAgaW4gdGhlIHVwbG9hZGVkIGRhdGEgKGkuZS4gb24gR29vZ2xlIERyaXZlLCBpbiB0aGUgU2hlZXQuKSAgRm9yIG5vdywgaW5zdGVhZCBvZiBgZ3M0X2NyZWF0ZSgpYCwgdXBsb2FkIHRoZSBmb3Jnb29nX2ZseWVyLmNzdiBmaWxlICoqbWFudWFsbHkqKiB0byBHb29nbGUgRHJpdmUsIHRoZW4gb3BlbiB0aGUgY3N2IG9uIEdvb2dsZSBEcml2ZSwgYW5kIHRoZW4gIk9wZW4gV2l0aCIgYXMgYSBTaGVldC4NCg0KYGBgDQp7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KIyBnb29nbGVzaGVldHM0OjpnczRfY3JlYXRlKCJNYXN0ZXIgV29ya3Nob3AgbGlzdCBmb3IgU2VtZXN0ZXIiLCBzaGVldHMgPSBsaXN0KHNuYW1lID0gbXlfZGYpKQ0KDQpnb29nbGVzaGVldHM0OjpnczRfY3JlYXRlKCJNYXN0ZXIgV29ya3Nob3AgbGlzdCBmb3IgU2VtZXN0ZXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVldHMgPSBsaXN0KFNoZWV0MSA9IGZvcl9nb29nX2RmKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVpvbmUgPSAiQW1lcmljYS9OZXdfWW9yayIpDQpgYGANCg0K
+LS0tDQp0aXRsZTogIkNyZWF0ZSBDU1YgZmlsZSBvZiBGdXR1cmUgV29ya3Nob3BzIg0Kc3VidGl0bGU6ICJEYXRhIGFyZSBmcm9tIHRoZSBMaWJDYWwgQVBJLCBwYXJzZWQgYnkgcnZlc3QgYW5kIGRwbHlyIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KMS4gUnVuIHRoaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VtZXN0ZXIgdG8gZ2VuZXJhdGUgdGhlIG1haW4gd29ya3Nob3AgbGlzdA0KMS4gVXNlIHRoaXMgdG8gZ2VuZXJhdGUgdGhlIHdvcmtzaG9wIGZseWVyLCBmb3IgYWR2ZXJ0aXNpbmcNCjEuIFRoaXMgc2NyaXB0IGRlcGVuZHMgb24gYDAxX2dhdGhlcl9hbmRfd3JhbmdsZS5SYCB0byBoYXJ2ZXN0IHRoZSBkYXRhDQoNCiMjIFJlbGVhc2UgTm90ZXMNCg0KLSBBdWd1c3QgMTAsIDIwMjE6ICBVbmRlcnRvb2sgdGhpcyByZXZpc2lvbiBiZWNhdXNlIHRoZSBpbnRlZ3JhdGlvbiBvZiBvbmxpbmUgYW5kIGluLXBlcnNvbiB3b3Jrc2hvcHMgbWFkZSBKb2VsJ3Mgc2NyaXB0IGluZWZmZWN0aXZlLiAgTm9uZXRoZWxlc3MsIGJvcnJvd2VkIGhlYXZpbHkgZnJvbSBoaXMgcHJldmlvdXMgd29yay4gIFRoZSBSTUQgbWlncmF0aW9uIG9mIEpvZWwncyBgcnZlc3RMaWJjYWxDb2RlLlJgDQoNCiMjIGxpYnJhcnkgcGFja2FnZXMNCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZnMpDQpgYGANCg0KIyMgR2V0IERhdGENCg0KSW5nZXN0IGRhdGEgZnJvbSB3ZWIgcGFnZSAoTGliQ2FsIEFQSSkgJiBtYWtlIGEgY29sdW1uIGhlYWRlcnMgdGVtcGxhdGUgZm9yIHRoZSBhdHRlbmRhbmNlIHNoZWV0cyB0aGF0IHdpbGwgYmUgd3JpdHRlbiB0byBHb29nbGUuDQoNCiMjIyBoYXJ2ZXN0IHdlYnBhZ2UgZGF0YSBmcm9tIExpYkNhbCBBUEkNCg0KdGhpcyBuZXh0IENPREUgQ0hVTksgaXMgRElTQUJMRUQsIGJ1dCBkZXNpZ25lZCB0byByZXJ1biB0aGUgaGFydmVzdCBzY3JpcHQNCg0KDQpgYGB7ciBnZXQgd3JhbmdsZWQgZGF0YSwgaW5jbHVkZT1GQUxTRX0NCnNvdXJjZSgiMDFfZ2F0aGVyX2FuZF93cmFuZ2xlLlIiLCBsb2NhbCA9IGtuaXRyOjprbml0X2dsb2JhbCgpKQ0KIyBvciBzeXMuc291cmNlKCJ5b3VyLXNjcmlwdC5SIiwgZW52aXIgPSBrbml0cjo6a25pdF9nbG9iYWwoKSkNCmBgYA0KDQoNCiMjIFdyYW5nbGUgRGF0YQ0KDQpgYGB7cn0NCmZvcl9nb29nX2ZseWVyX2RmIDwtIG15X2RmICU+JSANCiAgICBzZWxlY3RfaWYoaXMuY2hhcmFjdGVyKSAlPiUgDQogICAgc2VsZWN0KHdvcmtzaG9wX2lkLCBkYXRlLCBkYXkgPSBkYXlfZmx5ZXIsIHRpdGxlLCBwcmVzZW50ZXIsICBvbmxpbmVfaW5fcGVyc29uID0gb25saW5lX2luX3BlcnNvbl9mbHllciwNCiAgICAgICAgICAgdGltZSA9IHRpbWVfZmx5ZXIsIHdvcmtzaG9wX2JlZ2lucyA9IGJlZ2luc19kaXNwbGF5LCB3b3Jrc2hvcF9lbmRzID0gZW5kc19kaXNwbGF5LCANCiAgICAgICAgICAgd29ya3Nob3BfZHVyYXRpb25fbWludXRlcywgZGVzY3JpcHRpb24sIHJlZ2lzdHJhdGlvbl9saW5rLCBsb2NhdGlvbikgDQpgYGANCg0KDQoNCiMjIFdyaXRlIG91dHB1dA0KDQpNYW51YWxseSBtb3ZlLCBhbmQgcmVuYW1lLCB0aGUgZ29vZ2xlIHNoZWV0IGludG8gdGhlIHByb3BlciBDRFZTIGdvb2dsZSBkcml2ZSBzcGFjZS4NCg0KYGBge3J9DQpmczo6ZGlyX2NyZWF0ZSgib3V0cHV0IikNCg0KZnM6OmZpbGVfY29weSgib3V0cHV0L3dvcmtzaG9wcy5jc3YiLCANCiAgICAgICAgICAgICAgZ2x1ZTo6Z2x1ZSgib3V0cHV0L3dvcmtzaG9wcy5iYWsue1N5cy5EYXRlKCl9Lntyb3VuZChTeXMuZ2V0cGlkKCkgKiBydW5pZigxKSl9LmNzdiIpKQ0KDQp3cml0ZV9jc3YobXlfZGYsICJvdXRwdXQvd29ya3Nob3BzLmNzdiIpDQoNCndyaXRlX2Nzdihmb3JfZ29vZ19mbHllcl9kZiwgIm91dHB1dC9mb3Jnb29nX2ZseWVyLmNzdiIpICANCmBgYA0KDQojIyBGb3IgRmx5ZXIgLS0gVXBsb2FkIG1hbnVsbHkgdG8gR29vZ2xlIFNoZWV0cy4gIA0KDQpNYW51YWxseSB1cGxvYWQgYGZvcl9nb29nZmx5ZXIuY3N2YCB0bzogIGBHb29nbGUgRHJpdmUgPiBDRFZTID4gU2VydmljZXMgPiBXb3Jrc2hvcHMgPiBbMjAyMSBGYWxsXSA+IFBsYW5uaW5nYA0KDQpUaGVyZSBhcmUgZXh0cmFuZW91cyBsZWFkaW5nIHNpbmdsZSBhcG9zdHJvcGhlcyBzaG93aW5nIHVwIGluIHRoZSB1cGxvYWRlZCBkYXRhIChpLmUuIG9uIEdvb2dsZSBEcml2ZSwgaW4gdGhlIFNoZWV0LikgIEZvciBub3csIGluc3RlYWQgb2YgYGdzNF9jcmVhdGUoKWAsIHVwbG9hZCB0aGUgZm9yZ29vZ19mbHllci5jc3YgZmlsZSAqKm1hbnVhbGx5KiogdG8gR29vZ2xlIERyaXZlLCB0aGVuIG9wZW4gdGhlIGNzdiBvbiBHb29nbGUgRHJpdmUsIGFuZCB0aGVuICJPcGVuIFdpdGgiIGFzIGEgU2hlZXQuDQoNCmBgYA0Ke3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCiMgZ29vZ2xlc2hlZXRzNDo6Z3M0X2NyZWF0ZSgiTWFzdGVyIFdvcmtzaG9wIGxpc3QgZm9yIFNlbWVzdGVyIiwgc2hlZXRzID0gbGlzdChzbmFtZSA9IG15X2RmKSkNCg0KZ29vZ2xlc2hlZXRzNDo6Z3M0X2NyZWF0ZSgiTWFzdGVyIFdvcmtzaG9wIGxpc3QgZm9yIFNlbWVzdGVyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlZXRzID0gbGlzdChTaGVldDEgPSBmb3JfZ29vZ19kZiksDQogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVab25lID0gIkFtZXJpY2EvTmV3X1lvcmsiKQ0KYGBgDQoNCg==
diff --git a/03_attendance_worksheets.Rmd b/03_attendance_worksheets.Rmd
index d608eea..bc9a569 100644
--- a/03_attendance_worksheets.Rmd
+++ b/03_attendance_worksheets.Rmd
@@ -22,7 +22,7 @@ Ingest data from web page (LibCal API) & make a column headers template for the
### harvest webpage data from LibCal API
-this next CODE CHUNK is DISABLED, but designed to rerun the harvest script
+this next CODE CHUNK is DISABLED, but designed to rerun the harvest script. INSTEAD skip to the `ingest_csv` code chunk.
```
{r get wrangled data, include=FALSE}
@@ -30,9 +30,9 @@ source("01_gather_and_wrangle.R", local = knitr::knit_global())
# or sys.source("your-script.R", envir = knitr::knit_global())
```
-Since the API can only be used at the begining of the semester, and since `01_gather_and_wrangle.R` was already called (by `02_foo.Rmd`) and generated `output/workshops.csv`, here, rather, we will simply ingest the file output/workshops.csv. NOTE: `01_gather_and_wrangle.R` if run after the begining fo the semester, will overwrite `workshops.csv`. In this case, use `read_csv()` to import one of the back-up files found in the output directory.
+Since the API can only be used at the beginning of the semester, and since `01_gather_and_wrangle.R` was already called (by `02_foo.Rmd`) and generated `output/workshops.csv`, here, rather, we will simply ingest the file output/workshops.csv. NOTE: `01_gather_and_wrangle.R`, if run after the beginning fo the semester, will overwrite `workshops.csv`. In this case, use `read_csv()` to import one of the back-up files found in the `output` directory.
-```{r message=FALSE, warning=FALSE, include=FALSE}
+```{r ingest csv, message=FALSE, warning=FALSE, include=FALSE}
my_df <- read_csv("output/workshops.csv")
```
diff --git a/03_attendance_worksheets.nb.html b/03_attendance_worksheets.nb.html
index dacabb9..60015e5 100644
--- a/03_attendance_worksheets.nb.html
+++ b/03_attendance_worksheets.nb.html
@@ -226,11 +226,11 @@ Get Data
Ingest data from web page (LibCal API) & make a column headers template for the attendance sheets that will be written to Google.
harvest webpage data from LibCal API
-
this next CODE CHUNK is DISABLED, but designed to rerun the harvest script
+
this next CODE CHUNK is DISABLED, but designed to rerun the harvest script. INSTEAD skip to the ingest_csv
code chunk.
{r get wrangled data, include=FALSE}
source("01_gather_and_wrangle.R", local = knitr::knit_global())
# or sys.source("your-script.R", envir = knitr::knit_global())
-
Since the API can only be used at the begining of the semester, and since 01_gather_and_wrangle.R
was already called (by 02_foo.Rmd
) and generated output/workshops.csv
, here, rather, we will simply ingest the file output/workshops.csv. NOTE: 01_gather_and_wrangle.R
if run after the begining fo the semester, will overwrite workshops.csv
. In this case, use read_csv()
to import one of the back-up files found in the output directory.
+
Since the API can only be used at the beginning of the semester, and since 01_gather_and_wrangle.R
was already called (by 02_foo.Rmd
) and generated output/workshops.csv
, here, rather, we will simply ingest the file output/workshops.csv. NOTE: 01_gather_and_wrangle.R
, if run after the beginning fo the semester, will overwrite workshops.csv
. In this case, use read_csv()
to import one of the back-up files found in the output
directory.
@@ -296,7 +296,7 @@ Upload to Google Drive
-LS0tDQp0aXRsZTogIkNyZWF0ZSBBdHRlbmRhbmNlIFdvcmtzaGVldHMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpNYWtlIG9uZSBibGFuayBhdHRlbmRhbmNlIHRlbXBsYXRlIGZvciBlYWNoIHdvcmtzaG9wLiBXcml0ZSBlYWNoIGJsYW5rIHRlbXBsYXRlIHRvIEdvb2dsZSBEcml2ZSBhcyBhIHNwcmVhZHNoZWV0LiANCg0KIyMgTGlicmFyeSBQYWNrYWdlcw0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KU3lzLnNldGVudihUWj0iQW1lcmljYS9OZXdfWW9yayIpDQpsaWJyYXJ5KHJ2ZXN0KQ0KbGlicmFyeShjbG9jaykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShmcykNCmxpYnJhcnkoZ29vZ2xlc2hlZXRzNCkNCmBgYA0KDQojIyBHZXQgRGF0YQ0KDQpJbmdlc3QgZGF0YSBmcm9tIHdlYiBwYWdlIChMaWJDYWwgQVBJKSAmIG1ha2UgYSBjb2x1bW4gaGVhZGVycyB0ZW1wbGF0ZSBmb3IgdGhlIGF0dGVuZGFuY2Ugc2hlZXRzIHRoYXQgd2lsbCBiZSB3cml0dGVuIHRvIEdvb2dsZS4NCg0KIyMjIGhhcnZlc3Qgd2VicGFnZSBkYXRhIGZyb20gTGliQ2FsIEFQSQ0KDQp0aGlzIG5leHQgQ09ERSBDSFVOSyBpcyBESVNBQkxFRCwgYnV0IGRlc2lnbmVkIHRvIHJlcnVuIHRoZSBoYXJ2ZXN0IHNjcmlwdA0KDQpgYGANCntyIGdldCB3cmFuZ2xlZCBkYXRhLCBpbmNsdWRlPUZBTFNFfQ0Kc291cmNlKCIwMV9nYXRoZXJfYW5kX3dyYW5nbGUuUiIsIGxvY2FsID0ga25pdHI6OmtuaXRfZ2xvYmFsKCkpDQojIG9yIHN5cy5zb3VyY2UoInlvdXItc2NyaXB0LlIiLCBlbnZpciA9IGtuaXRyOjprbml0X2dsb2JhbCgpKQ0KYGBgDQoNClNpbmNlIHRoZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5pbmcgb2YgdGhlIHNlbWVzdGVyLCBhbmQgc2luY2UgYDAxX2dhdGhlcl9hbmRfd3JhbmdsZS5SYCB3YXMgYWxyZWFkeSBjYWxsZWQgKGJ5IGAwMl9mb28uUm1kYCkgYW5kIGdlbmVyYXRlZCBgb3V0cHV0L3dvcmtzaG9wcy5jc3ZgLCBoZXJlLCByYXRoZXIsIHdlIHdpbGwgc2ltcGx5IGluZ2VzdCB0aGUgZmlsZSBvdXRwdXQvd29ya3Nob3BzLmNzdi4gIE5PVEU6IGAwMV9nYXRoZXJfYW5kX3dyYW5nbGUuUmAgaWYgcnVuIGFmdGVyIHRoZSBiZWdpbmluZyBmbyB0aGUgc2VtZXN0ZXIsIHdpbGwgb3ZlcndyaXRlIGB3b3Jrc2hvcHMuY3N2YC4gIEluIHRoaXMgY2FzZSwgdXNlIGByZWFkX2NzdigpYCB0byBpbXBvcnQgb25lIG9mIHRoZSBiYWNrLXVwIGZpbGVzIGZvdW5kIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5Lg0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KbXlfZGYgPC0gcmVhZF9jc3YoIm91dHB1dC93b3Jrc2hvcHMuY3N2IikNCmBgYA0KDQoNCiMjIyB3b3Jrc2hlZXRzIHRlbXBsYXRlIGhlYWRlcg0KDQptYWtlIGEgdmVjdG9yIG9mIGNvbHVtbiBoZWFkaW5ncyB0aGF0IHdpbGwgYmVjb21lIHRoZSBoZWFkaW5ncyBvZiB0aGUgZ29vZ2xlIHNoZWVzdHMgYXR0ZW5kYW5jZSByZWNvcmRzDQoNCmBgYHtyfQ0KYmxhbmtfZGYgPC0gdGliYmxlKCJBdHRlbmRlZCAoeCBvciBibGFuaykiID0gTkEsDQogICAgICAgICAgICAgICAgIlJlZ2lzdHJhdGlvbiBTdGF0dXMgKFJlZ2lzdGVyZWQsIFdhaXRsaXN0LCBvciBXYWxrLWluKSIgID0gTkEsDQogICAgICAgICAgICAgICAgIkZpcnN0IE5hbWUiID0gTkEsDQogICAgICAgICAgICAgICAgIkxhc3QgTmFtZSIgPSBOQSwNCiAgICAgICAgICAgICAgICAiRW1haWwiID0gTkEsDQogICAgICAgICAgICAgICAgIkJvb2tpbmcgTWFkZSIgPSBOQSwNCiAgICAgICAgICAgICAgICAiQXR0ZW5kYW5jZSIgPSBOQSwNCiAgICAgICAgICAgICAgICAiQXJlIHlvdSBhZmZpbGlhdGVkIHdpdGggRHVrZSBVbml2ZXJzaXR5LCBEdWtlIE1lZGljYWwgQ2VudGVyLCBEQ1JJLCBvciBhbm90aGVyIER1a2UgZ3JvdXA/IiA9IE5BLA0KICAgICAgICAgICAgICAgICJBY2FkZW1pYyBTdGF0dXMgKG9yIG90aGVyKSIgPSBOQSwNCiAgICAgICAgICAgICAgICAiRGlzY2lwbGluZSBvciBBZmZpbGlhdGlvbiIgPSBOQSwNCiAgICAgICAgICAgICAgICAiSW5zdGl0dXRlcywgSW5pdGlhdGl2ZXMsIG9yIFByb2dyYW0gQWZmaWxpYXRpb24iID0gTkEsDQogICAgICAgICAgICAgICAgIldoZXJlIGRpZCB5b3UgaGVhciBhYm91dCB0aGlzIGV2ZW50PyIgPSBOQSwNCiAgICAgICAgICAgICAgICAiSGF2ZSB5b3UgY29uc3VsdGVkIHdpdGggRGF0YSBhbmQgVmlzdWFsaXphdGlvbiBTZXJ2aWNlcyBiZWZvcmUgdGhpcyB3b3Jrc2hvcD8iID0gTkEsDQogICAgICAgICAgICAgICAgIldvdWxkIHlvdSBsaWtlIHRvIHJlY2VpdmUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBEVlMgZXZlbnRzIGFuZCB0cmFpbmluZz8iID0gTkEsDQogICAgICAgICAgICAgICAgIkknbSBpbnRlcmVzdGVkIGluIHJlZ2lzdGVyaW5nIGZvciB0aGlzIHdvcmtzaG9wIGJlY2F1c2U6IiA9IE5BLA0KICAgICAgICAgICAgICAgICJJZiBvdGhlciwgZGVzY3JpYmUgYmVsb3c6IiA9IE5BKQ0KYGBgDQoNCiMjIFdyYW5nbGUNCg0KYGBge3J9DQpteV9kZiA8LSBteV9kZiAlPiUgDQogICAgYmluZF9jb2xzKGJsYW5rX2RmKSAlPiUgDQogICAgcmVuYW1lKGBXb3Jrc2hvcCBEYXRlYCA9IGRhdGUpICU+JQ0KICAgIHNlbGVjdChgQXR0ZW5kZWQgKHggb3IgYmxhbmspYCwgDQogICAgICAgICAgIGBSZWdpc3RyYXRpb24gU3RhdHVzIChSZWdpc3RlcmVkLCBXYWl0bGlzdCwgb3IgV2Fsay1pbilgLA0KICAgICAgICAgICBgV29ya3Nob3AgRGF0ZWAsDQogICAgICAgICAgIGBXb3Jrc2hvcCBOYW1lYCA9IHRpdGxlLA0KICAgICAgICAgICBgV29ya3Nob3BJRGAgPSB3b3Jrc2hvcF9pZCwNCiAgICAgICAgICAgYEZpcnN0IE5hbWVgOmxhc3RfY29sKCkpDQpgYGANCg0KDQojIyBVcGxvYWQgdG8gR29vZ2xlIERyaXZlDQoNClRoZSBmb2xsb3dpbmcgY29kZSBjaHVua3MgYXJlIG1hbnVhbGx5IGRpc2FibGVkIGJlY2F1c2UgdGhleSB3cml0ZSBmaWxlcyB0byBnb29nbGUgZHJpdmUuICBUaGlzIGlzICJiZWx0IGFuZCBzdXNwZW5kZXJzIiBjYXV0aW9uLiAgVG8gZW5hYmxlIHRoZSBjb2RlLWJsb2NrcywgcmVtb3ZlIHRoZSBjYXJyaWFnZS1yZXR1cm4gYXQgdGhlIGVuZCBvZiB0aGUgdGhpcmQgYmFja3RpY2sgYW5kIGJlZm9yZSB0aGUgZmlyc3Qgb3BlbiBjdXJseSBicmFjZS4NCg0KQWZ0ZXIgdXBsb2FkZWQgdG8gR29vZ2xlIEFjY291bnQncyBob21lZHJpdmUsIC4uLiAgDQpNb3ZlIHRvICBgR29vZ2xlIERyaXZlID4gQ0RWUyA+IFNlcnZpY2VzID4gV29ya3Nob3BzID4gWzIwMjEgRmFsbF0gPiBBdHRlbmRhbmNlYA0KDQpgYGANCntyfQ0Kd29ya3Nob3BfbGlzdF90b191cGxvYWRfaW50b19Hb29nbGVEcml2ZSA8LSBteV9kZiAlPiUgDQogICByb3d3aXNlKCkgJT4lDQogICBncm91cF9tYXAodGliYmxlKSAgIyBtYWtlIGVhY2ggcm93IGl0J3Mgb3duIHRpYmJsZQ0KDQp3YWxrKA0KICB3b3Jrc2hvcF9saXN0X3RvX3VwbG9hZF9pbnRvX0dvb2dsZURyaXZlLA0KICB+IGdzNF9jcmVhdGUoLiRgV29ya3Nob3AgTmFtZWAsIHNoZWV0cyA9IGxpc3QoYXR0ZW5kYW5jZSA9IC4pKQ0KKQ0KYGBgDQoNCg==
+LS0tDQp0aXRsZTogIkNyZWF0ZSBBdHRlbmRhbmNlIFdvcmtzaGVldHMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpNYWtlIG9uZSBibGFuayBhdHRlbmRhbmNlIHRlbXBsYXRlIGZvciBlYWNoIHdvcmtzaG9wLiBXcml0ZSBlYWNoIGJsYW5rIHRlbXBsYXRlIHRvIEdvb2dsZSBEcml2ZSBhcyBhIHNwcmVhZHNoZWV0LiANCg0KIyMgTGlicmFyeSBQYWNrYWdlcw0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KU3lzLnNldGVudihUWj0iQW1lcmljYS9OZXdfWW9yayIpDQpsaWJyYXJ5KHJ2ZXN0KQ0KbGlicmFyeShjbG9jaykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShmcykNCmxpYnJhcnkoZ29vZ2xlc2hlZXRzNCkNCmBgYA0KDQojIyBHZXQgRGF0YQ0KDQpJbmdlc3QgZGF0YSBmcm9tIHdlYiBwYWdlIChMaWJDYWwgQVBJKSAmIG1ha2UgYSBjb2x1bW4gaGVhZGVycyB0ZW1wbGF0ZSBmb3IgdGhlIGF0dGVuZGFuY2Ugc2hlZXRzIHRoYXQgd2lsbCBiZSB3cml0dGVuIHRvIEdvb2dsZS4NCg0KIyMjIGhhcnZlc3Qgd2VicGFnZSBkYXRhIGZyb20gTGliQ2FsIEFQSQ0KDQp0aGlzIG5leHQgQ09ERSBDSFVOSyBpcyBESVNBQkxFRCwgYnV0IGRlc2lnbmVkIHRvIHJlcnVuIHRoZSBoYXJ2ZXN0IHNjcmlwdC4gIElOU1RFQUQgc2tpcCB0byB0aGUgYGluZ2VzdF9jc3ZgIGNvZGUgY2h1bmsuDQoNCmBgYA0Ke3IgZ2V0IHdyYW5nbGVkIGRhdGEsIGluY2x1ZGU9RkFMU0V9DQpzb3VyY2UoIjAxX2dhdGhlcl9hbmRfd3JhbmdsZS5SIiwgbG9jYWwgPSBrbml0cjo6a25pdF9nbG9iYWwoKSkNCiMgb3Igc3lzLnNvdXJjZSgieW91ci1zY3JpcHQuUiIsIGVudmlyID0ga25pdHI6OmtuaXRfZ2xvYmFsKCkpDQpgYGANCg0KU2luY2UgdGhlIEFQSSBjYW4gb25seSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbWVzdGVyLCBhbmQgc2luY2UgYDAxX2dhdGhlcl9hbmRfd3JhbmdsZS5SYCB3YXMgYWxyZWFkeSBjYWxsZWQgKGJ5IGAwMl9mb28uUm1kYCkgYW5kIGdlbmVyYXRlZCBgb3V0cHV0L3dvcmtzaG9wcy5jc3ZgLCBoZXJlLCByYXRoZXIsIHdlIHdpbGwgc2ltcGx5IGluZ2VzdCB0aGUgZmlsZSBvdXRwdXQvd29ya3Nob3BzLmNzdi4gIE5PVEU6IGAwMV9nYXRoZXJfYW5kX3dyYW5nbGUuUmAsIGlmIHJ1biBhZnRlciB0aGUgYmVnaW5uaW5nIGZvIHRoZSBzZW1lc3Rlciwgd2lsbCBvdmVyd3JpdGUgYHdvcmtzaG9wcy5jc3ZgLiAgSW4gdGhpcyBjYXNlLCB1c2UgYHJlYWRfY3N2KClgIHRvIGltcG9ydCBvbmUgb2YgdGhlIGJhY2stdXAgZmlsZXMgZm91bmQgaW4gdGhlIGBvdXRwdXRgIGRpcmVjdG9yeS4NCg0KYGBge3IgaW5nZXN0IGNzdiwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCm15X2RmIDwtIHJlYWRfY3N2KCJvdXRwdXQvd29ya3Nob3BzLmNzdiIpDQpgYGANCg0KDQojIyMgd29ya3NoZWV0cyB0ZW1wbGF0ZSBoZWFkZXINCg0KbWFrZSBhIHZlY3RvciBvZiBjb2x1bW4gaGVhZGluZ3MgdGhhdCB3aWxsIGJlY29tZSB0aGUgaGVhZGluZ3Mgb2YgdGhlIGdvb2dsZSBzaGVlc3RzIGF0dGVuZGFuY2UgcmVjb3Jkcw0KDQpgYGB7cn0NCmJsYW5rX2RmIDwtIHRpYmJsZSgiQXR0ZW5kZWQgKHggb3IgYmxhbmspIiA9IE5BLA0KICAgICAgICAgICAgICAgICJSZWdpc3RyYXRpb24gU3RhdHVzIChSZWdpc3RlcmVkLCBXYWl0bGlzdCwgb3IgV2Fsay1pbikiICA9IE5BLA0KICAgICAgICAgICAgICAgICJGaXJzdCBOYW1lIiA9IE5BLA0KICAgICAgICAgICAgICAgICJMYXN0IE5hbWUiID0gTkEsDQogICAgICAgICAgICAgICAgIkVtYWlsIiA9IE5BLA0KICAgICAgICAgICAgICAgICJCb29raW5nIE1hZGUiID0gTkEsDQogICAgICAgICAgICAgICAgIkF0dGVuZGFuY2UiID0gTkEsDQogICAgICAgICAgICAgICAgIkFyZSB5b3UgYWZmaWxpYXRlZCB3aXRoIER1a2UgVW5pdmVyc2l0eSwgRHVrZSBNZWRpY2FsIENlbnRlciwgRENSSSwgb3IgYW5vdGhlciBEdWtlIGdyb3VwPyIgPSBOQSwNCiAgICAgICAgICAgICAgICAiQWNhZGVtaWMgU3RhdHVzIChvciBvdGhlcikiID0gTkEsDQogICAgICAgICAgICAgICAgIkRpc2NpcGxpbmUgb3IgQWZmaWxpYXRpb24iID0gTkEsDQogICAgICAgICAgICAgICAgIkluc3RpdHV0ZXMsIEluaXRpYXRpdmVzLCBvciBQcm9ncmFtIEFmZmlsaWF0aW9uIiA9IE5BLA0KICAgICAgICAgICAgICAgICJXaGVyZSBkaWQgeW91IGhlYXIgYWJvdXQgdGhpcyBldmVudD8iID0gTkEsDQogICAgICAgICAgICAgICAgIkhhdmUgeW91IGNvbnN1bHRlZCB3aXRoIERhdGEgYW5kIFZpc3VhbGl6YXRpb24gU2VydmljZXMgYmVmb3JlIHRoaXMgd29ya3Nob3A/IiA9IE5BLA0KICAgICAgICAgICAgICAgICJXb3VsZCB5b3UgbGlrZSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgRFZTIGV2ZW50cyBhbmQgdHJhaW5pbmc/IiA9IE5BLA0KICAgICAgICAgICAgICAgICJJJ20gaW50ZXJlc3RlZCBpbiByZWdpc3RlcmluZyBmb3IgdGhpcyB3b3Jrc2hvcCBiZWNhdXNlOiIgPSBOQSwNCiAgICAgICAgICAgICAgICAiSWYgb3RoZXIsIGRlc2NyaWJlIGJlbG93OiIgPSBOQSkNCmBgYA0KDQojIyBXcmFuZ2xlDQoNCmBgYHtyfQ0KbXlfZGYgPC0gbXlfZGYgJT4lIA0KICAgIGJpbmRfY29scyhibGFua19kZikgJT4lIA0KICAgIHJlbmFtZShgV29ya3Nob3AgRGF0ZWAgPSBkYXRlKSAlPiUNCiAgICBzZWxlY3QoYEF0dGVuZGVkICh4IG9yIGJsYW5rKWAsIA0KICAgICAgICAgICBgUmVnaXN0cmF0aW9uIFN0YXR1cyAoUmVnaXN0ZXJlZCwgV2FpdGxpc3QsIG9yIFdhbGstaW4pYCwNCiAgICAgICAgICAgYFdvcmtzaG9wIERhdGVgLA0KICAgICAgICAgICBgV29ya3Nob3AgTmFtZWAgPSB0aXRsZSwNCiAgICAgICAgICAgYFdvcmtzaG9wSURgID0gd29ya3Nob3BfaWQsDQogICAgICAgICAgIGBGaXJzdCBOYW1lYDpsYXN0X2NvbCgpKQ0KYGBgDQoNCg0KIyMgVXBsb2FkIHRvIEdvb2dsZSBEcml2ZQ0KDQpUaGUgZm9sbG93aW5nIGNvZGUgY2h1bmtzIGFyZSBtYW51YWxseSBkaXNhYmxlZCBiZWNhdXNlIHRoZXkgd3JpdGUgZmlsZXMgdG8gZ29vZ2xlIGRyaXZlLiAgVGhpcyBpcyAiYmVsdCBhbmQgc3VzcGVuZGVycyIgY2F1dGlvbi4gIFRvIGVuYWJsZSB0aGUgY29kZS1ibG9ja3MsIHJlbW92ZSB0aGUgY2FycmlhZ2UtcmV0dXJuIGF0IHRoZSBlbmQgb2YgdGhlIHRoaXJkIGJhY2t0aWNrIGFuZCBiZWZvcmUgdGhlIGZpcnN0IG9wZW4gY3VybHkgYnJhY2UuDQoNCkFmdGVyIHVwbG9hZGVkIHRvIEdvb2dsZSBBY2NvdW50J3MgaG9tZWRyaXZlLCAuLi4gIA0KTW92ZSB0byAgYEdvb2dsZSBEcml2ZSA+IENEVlMgPiBTZXJ2aWNlcyA+IFdvcmtzaG9wcyA+IFsyMDIxIEZhbGxdID4gQXR0ZW5kYW5jZWANCg0KYGBgDQp7cn0NCndvcmtzaG9wX2xpc3RfdG9fdXBsb2FkX2ludG9fR29vZ2xlRHJpdmUgPC0gbXlfZGYgJT4lIA0KICAgcm93d2lzZSgpICU+JQ0KICAgZ3JvdXBfbWFwKHRpYmJsZSkgICMgbWFrZSBlYWNoIHJvdyBpdCdzIG93biB0aWJibGUNCg0Kd2FsaygNCiAgd29ya3Nob3BfbGlzdF90b191cGxvYWRfaW50b19Hb29nbGVEcml2ZSwNCiAgfiBnczRfY3JlYXRlKC4kYFdvcmtzaG9wIE5hbWVgLCBzaGVldHMgPSBsaXN0KGF0dGVuZGFuY2UgPSAuKSkNCikNCmBgYA0KDQo=
diff --git a/README.md b/README.md
index 805d356..9faa3e6 100644
--- a/README.md
+++ b/README.md
@@ -12,15 +12,13 @@ This repository contains a mixture of handy scripts and datasets used by the [Ce
This repository was **forked** from https://github.com/herndonj/dvs_cal
-* **02_make_main_workshop_list.Rmd** - a migration from `rvestLibcalCode.R`. Use this to generate the pre-semester list of workshops. Gathers data from the LibCal API, writes a CSV file, writes a GoogleSheet to the google account holder's home directory (via `library(googlesheets4)`)
-* **03_attendance_worksheets.Rmd** - makes an attedance sheet for each workshop
+* **02_make_main_workshop_list.Rmd** - a migration from `rvestLibcalCode.R`. Use this to generate the pre-semester _list of workshops_ and the pre-semester advertising **flyer**. Gathers data from the LibCal API, writes a CSV file, writes a GoogleSheet to the google account holder's home directory (via `library(googlesheets4)`)
+* **03_attendance_worksheets.Rmd** - make an attendance sheet for each workshop, upload to Google Drive (CDVS folder)
* **01_gather_and_wrangle.R** - havest LibCal API data to make a data_frame of all the workshops as reported at the beginning of the semester.
-* **dvs_cal.Rmd** - a handy script if you'd like to see our workshop series as data frames.
-* **rvestLibcalCode.R** - In DVS, we use Springshare's LibCal service to manage our registrations and workshop descriptions- this script pulls the current list of public workshops into a data frame for further management and analysis (warning - the list will only reflect upcoming workshops. If you need to see workshops since the fall of 2017, check out the dvs_cal.Rmd script which will generate dataframes by semester.)
##Changes in Registration Form
-###2018-01-22
+### 2018-01-22
Question 3 "Are you from Duke University, Duke Medical Center, DCRI, or another Duke group" changed to "Are you affiliated with Duke University, Duke Medical Center, DCRI, or another Duke group?"