Skip to content

Instantly share code, notes, and snippets.

@JBGruber
Last active October 4, 2022 10:55

Revisions

  1. JBGruber revised this gist Oct 4, 2022. 1 changed file with 12 additions and 12 deletions.
    24 changes: 12 additions & 12 deletions make_ics_sheet.r
    Original file line number Diff line number Diff line change
    @@ -18,23 +18,23 @@ make_ics <- function(sheet,
    googlesheets4::read_sheet(sheet),
    start_time = paste(Date, `TIME (CET)`),
    start_time = stringr::str_replace(start_time, "(am|pm)", ":00 \\1"),
    start_time = lubridate::ymd_hm(start_time, tz = "CET"),
    start_time = lubridate::with_tz(lubridate::ymd_hm(start_time, tz = "CET"), "UTC"),
    end_time = start_time + 60 * 60
    )

    events <- unlist(lapply(seq_len(nrow(sheet)), function(i) {
    c("BEGIN:VEVENT",
    "SUMMARY:Abraham Lincoln",
    paste0("UID:tada_polsci", as.integer(sheet$start_time[i])),
    "SEQUENCE:0",
    "STATUS:CONFIRMED",
    "TRANSP:TRANSPARENT",
    paste0("DTSTART;VALUE=DATE-TIME:", format(sheet$start_time[i], "%Y%m%dT%H%M00Z")),
    paste0("DTEND;VALUE=DATE-TIME:", format(sheet$end_time[i], "%Y%m%dT%H%M00Z")),
    paste0("LOCATION:", sheet$Location[i]),
    paste0("SUMMARY: TADA Polsci Reading Group: ", sheet$`Presenter/Chair`[i], ": ", sheet$Title[i]),
    paste0("DESCRIPTION: Text-as-Data Reading Group ", sheet$`Session type`[i], "\\n\\nRegister via ", sheet$Location[i]),
    "END:VEVENT")
    "SUMMARY:TADA Polsci Reading Group",
    paste0("UID:tada_polsci", as.integer(sheet$start_time[i])),
    "SEQUENCE:0",
    "STATUS:CONFIRMED",
    "TRANSP:TRANSPARENT",
    paste0("DTSTART;VALUE=DATE-TIME:", format(sheet$start_time[i], "%Y%m%dT%H%M00Z")),
    paste0("DTEND;VALUE=DATE-TIME:", format(sheet$end_time[i], "%Y%m%dT%H%M00Z")),
    paste0("LOCATION:", sheet$Location[i]),
    paste0("SUMMARY: TADA Polsci Reading Group: ", sheet$`Presenter/Chair`[i], ": ", sheet$Title[i]),
    paste0("DESCRIPTION: Text-as-Data Reading Group ", sheet$`Session type`[i], "\\n\\nRegister via ", sheet$Location[i]),
    "END:VEVENT")
    }))

    out <- c(
  2. JBGruber revised this gist Sep 22, 2022. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions make_ics_sheet.r
    Original file line number Diff line number Diff line change
    @@ -22,7 +22,7 @@ make_ics <- function(sheet,
    end_time = start_time + 60 * 60
    )

    events <- lapply(seq_len(nrow(sheet)), function(i) {
    events <- unlist(lapply(seq_len(nrow(sheet)), function(i) {
    c("BEGIN:VEVENT",
    "SUMMARY:Abraham Lincoln",
    paste0("UID:tada_polsci", as.integer(sheet$start_time[i])),
    @@ -35,8 +35,7 @@ make_ics <- function(sheet,
    paste0("SUMMARY: TADA Polsci Reading Group: ", sheet$`Presenter/Chair`[i], ": ", sheet$Title[i]),
    paste0("DESCRIPTION: Text-as-Data Reading Group ", sheet$`Session type`[i], "\\n\\nRegister via ", sheet$Location[i]),
    "END:VEVENT")
    }) %>%
    unlist()
    }))

    out <- c(
    "BEGIN:VCALENDAR",
  3. JBGruber revised this gist Sep 22, 2022. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion make_ics_sheet.r
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ make_ics <- function(sheet,
    sheet <- dplyr::mutate(
    googlesheets4::read_sheet(sheet),
    start_time = paste(Date, `TIME (CET)`),
    start_time = str_replace(start_time, "(am|pm)", ":00 \\1"),
    start_time = stringr::str_replace(start_time, "(am|pm)", ":00 \\1"),
    start_time = lubridate::ymd_hm(start_time, tz = "CET"),
    end_time = start_time + 60 * 60
    )
  4. JBGruber revised this gist Sep 21, 2022. 1 changed file with 6 additions and 8 deletions.
    14 changes: 6 additions & 8 deletions make_ics_sheet.r
    Original file line number Diff line number Diff line change
    @@ -11,13 +11,11 @@
    #' @export
    #'
    #' @examples
    #' make_ics("https://docs.google.com/spreadsheets/d/1FJlqAPeJJbRTYy-ao21f_MgVSipoBTVNMNhYg0TQcqY/edit?pli=1#gid=196289460",
    #' location = "https://hu-berlin.zoom.us/meeting/register/u5ctcOGsrzojHNy2Y00UraLT6Qhv1MBMFzbB")
    make_ics <- function(sheet,
    location,
    #' make_ics("https://docs.google.com/spreadsheets/d/1FJlqAPeJJbRTYy-ao21f_MgVSipoBTVNMNhYg0TQcqY/edit?pli=1#gid=196289460")
    make_ics <- function(sheet,
    outfile = "tada_reading_group.ics") {
    sheet <- dplyr::mutate(
    read_sheet(sheet),
    googlesheets4::read_sheet(sheet),
    start_time = paste(Date, `TIME (CET)`),
    start_time = str_replace(start_time, "(am|pm)", ":00 \\1"),
    start_time = lubridate::ymd_hm(start_time, tz = "CET"),
    @@ -32,10 +30,10 @@ make_ics <- function(sheet,
    "STATUS:CONFIRMED",
    "TRANSP:TRANSPARENT",
    paste0("DTSTART;VALUE=DATE-TIME:", format(sheet$start_time[i], "%Y%m%dT%H%M00Z")),
    paste0("DTEND;VALUE=DATE-TIME:", format(sheet$start_time[i], "%Y%m%dT%H%M00Z")),
    paste0("LOCATION:", location),
    paste0("DTEND;VALUE=DATE-TIME:", format(sheet$end_time[i], "%Y%m%dT%H%M00Z")),
    paste0("LOCATION:", sheet$Location[i]),
    paste0("SUMMARY: TADA Polsci Reading Group: ", sheet$`Presenter/Chair`[i], ": ", sheet$Title[i]),
    paste0("DESCRIPTION: Text-as-Data Reading Group ", sheet$`Session type`[i], "\\n\\nRegister via ", location),
    paste0("DESCRIPTION: Text-as-Data Reading Group ", sheet$`Session type`[i], "\\n\\nRegister via ", sheet$Location[i]),
    "END:VEVENT")
    }) %>%
    unlist()
  5. JBGruber created this gist Sep 16, 2022.
    53 changes: 53 additions & 0 deletions make_ics_sheet.r
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    #' Make ICS calendar file
    #'
    #' Make an ICS calendar file from the text-as-data reading group Google sheet
    #' for importing events into your calendar.
    #'
    #' @param sheet URL of the Google sheet (current URL in example).
    #' @param location currently the link to register on Zoom.
    #' @param outfile file name of the output ics file.
    #'
    #' @return
    #' @export
    #'
    #' @examples
    #' make_ics("https://docs.google.com/spreadsheets/d/1FJlqAPeJJbRTYy-ao21f_MgVSipoBTVNMNhYg0TQcqY/edit?pli=1#gid=196289460",
    #' location = "https://hu-berlin.zoom.us/meeting/register/u5ctcOGsrzojHNy2Y00UraLT6Qhv1MBMFzbB")
    make_ics <- function(sheet,
    location,
    outfile = "tada_reading_group.ics") {
    sheet <- dplyr::mutate(
    read_sheet(sheet),
    start_time = paste(Date, `TIME (CET)`),
    start_time = str_replace(start_time, "(am|pm)", ":00 \\1"),
    start_time = lubridate::ymd_hm(start_time, tz = "CET"),
    end_time = start_time + 60 * 60
    )

    events <- lapply(seq_len(nrow(sheet)), function(i) {
    c("BEGIN:VEVENT",
    "SUMMARY:Abraham Lincoln",
    paste0("UID:tada_polsci", as.integer(sheet$start_time[i])),
    "SEQUENCE:0",
    "STATUS:CONFIRMED",
    "TRANSP:TRANSPARENT",
    paste0("DTSTART;VALUE=DATE-TIME:", format(sheet$start_time[i], "%Y%m%dT%H%M00Z")),
    paste0("DTEND;VALUE=DATE-TIME:", format(sheet$start_time[i], "%Y%m%dT%H%M00Z")),
    paste0("LOCATION:", location),
    paste0("SUMMARY: TADA Polsci Reading Group: ", sheet$`Presenter/Chair`[i], ": ", sheet$Title[i]),
    paste0("DESCRIPTION: Text-as-Data Reading Group ", sheet$`Session type`[i], "\\n\\nRegister via ", location),
    "END:VEVENT")
    }) %>%
    unlist()

    out <- c(
    "BEGIN:VCALENDAR",
    "VERSION:2.0",
    "PRODID:-//tada_polsci//NONSGML v1.0//EN",
    "CALSCALE:GREGORIAN",
    events,
    "END:VCALENDAR")
    outfile <- ifelse(tools::file_ext(outfile) != "ics", paste0(outfile, ".ics"), outfile)
    message("Writing to file: ", outfile, appendLF = F)
    writeLines(out, outfile, useBytes = TRUE)
    }