Skip to content

Instantly share code, notes, and snippets.

@draffensperger
Created May 14, 2013 01:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save draffensperger/5572858 to your computer and use it in GitHub Desktop.
Save draffensperger/5572858 to your computer and use it in GitHub Desktop.
This is a Google Apps Script for a Google Spreadsheet which gets events from a Google Calendar and loads them into the spreadsheet.
function getGCalData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var inSheet = ss.getSheetByName("GCalParams");
var id = inSheet.getRange("B1").getValue();
var startDate = inSheet.getRange("B2").getValue();
var endDate = inSheet.getRange("B3").getValue();
var cal = CalendarApp.getCalendarById(id);
var events = cal.getEvents(startDate, endDate);
var zone = cal.getTimeZone();
var i = 0;
var rows = [];
var titleRow = ['Title', 'Start', 'End', 'Duration', 'WeekStart', 'Key'];
rows.push(titleRow);
for (i = 0; i < events.length; i++) {
var e = events[i];
if (!e.isAllDayEvent()) {
var start = e.getStartTime();
var end = e.getEndTime();
var diff = end.getTime() - start.getTime();
var duration = Math.round(diff/100.0/60.0/60.0) / 10.0;
var daysSinceSunday = start.getDay();
var weekStart = new Date(start.getYear(), start.getMonth(), start.getDate() - daysSinceSunday);
var title = e.getTitle();
var row = [title, start, end, duration, weekStart, Utilities.formatDate(weekStart, zone, "M/d/yyyy") + ":" + title];
rows.push(row);
}
}
var outSheet = ss.getSheetByName("GCalData");
outSheet.clear();
outSheet.getRange(1, 1, rows.length, titleRow.length).setValues(rows);
Browser.msgBox("Updated GCal Data.");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment