Skip to content
mlor2 edited this page Apr 16, 2012 · 1 revision

function importEvents(e) {

var calendar_name = e.parameter.calendar; var startDate = new Date(e.parameter.year, e.parameter.month - 1, 1); var endDate = new Date(e.parameter.year, e.parameter.month, 1); var Calendar = CalendarApp.getCalendarsByName(calendar_name); var sheetName = calendar_name + "-" + e.parameter.year + "-" + e.parameter.month;

var events = Calendar[0].getEvents(startDate , endDate); if (events[0]) { var eventarray = new Array(); var line = new Array(); line.push('Title'); line.push('Start Date'); line.push('End Date'); line.push('Location'); line.push('Total time'); eventarray.push(line);

var i = 0;
for (i = 0; i < events.length; i++) {
  line = new Array();
  line.push(events[i].getTitle());
  line.push(events[i].getStartTime());
  line.push(events[i].getEndTime());
  line.push(events[i].getLocation());
  line.push((events[i].getEndTime() - events[i].getStartTime()) / 3600000);
  eventarray.push(line);
}

var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);
sheet.getRange('A1:E' + (i+1)).setValues(eventarray);
sheet.getRange('D' + (i+2)).setValue('Sum');
sheet.getRange('E' + (i+2)).setFormula('=SUM(E3:E' + (i+1)+ ')');    

} else { Browser.msgBox('nothing between ' + startDate + ' till ' + endDate); }

var app = UiApp.getActiveApplication(); app.close(); return app;
}

function calendar2Sheet() { var doc = SpreadsheetApp.getActiveSpreadsheet(); var app = UiApp.createApplication().setTitle('Import from calendar'); // Create a grid with 3 text boxes and corresponding labels var grid = app.createGrid(3, 2); grid.setWidget(0, 0, app.createLabel('Calendar name:'));

var list = app.createListBox(); list.setName('calendar'); grid.setWidget(0, 1, list); var calendars = CalendarApp.getAllCalendars(); for (var i = 0; i < calendars .length; i++) { list.a list.addItem(calendars[i].getName()); }

grid.setWidget(1, 0, app.createLabel('Year:')); grid.setWidget(1, 1, app.createTextBox().setName('year').setText('2011')); grid.setWidget(2, 0, app.createLabel('Month')); grid.setWidget(2, 1, app.createTextBox().setName('month').setText('11'));

// Create a vertical panel.. var panel = app.createVerticalPanel();

// ...and add the grid to the panel panel.add(grid);

// Create a button and click handler; pass in the grid object as a callback element and the handler as a click handler // Identify the function b as the server click handler

var button = app.createButton('submit'); var handler = app.createServerClickHandler('importEvents'); handler.addCallbackElement(grid); button.addClickHandler(handler);

// Add the button to the panel and the panel to the application, then display the application app in the Spreadsheet doc panel.add(button); app.add(panel); doc.show(app); }

function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); var menuEntries = [{name: "Import from calendar", functionName: "calendar2Sheet"}];
ss.addMenu("Calendar2Sheet", menuEntries);
}