Wir legen als erstes ein neues Spreadsheet an und beschriften die Titelleiste mit den Informationen, die wir später aus unserem Kalender importieren möchten:
Dann öffnen wir den Skripteditor (Tools -> Skripteditor), wo wir bereits den Rumpf einer Funktion vorfinden. Wir benennen Sie in importCalendar() um und verknüpfen als erstes unser Skript mit unserem Spreadsheet, indem wir die Methoden getActive() und getActiveSheet() verwenden:
function importCalendar() { var ss = SpreadsheetApp.getActive(); var sheet = SpreadsheetApp.getActiveSheet(); }
Mit der folgenden Zeile legen wir fest, in welchen Bereich (Range) die Informationen aus dem Kalender geschrieben werden sollen. Wir beginnen mit der Zeile 2, um die Titelleiste nicht zu überschreiben. Die Länge der Range ist willkürlich gewählt:
var range = sheet.getRange("A2:C500");Um die Verbindung mit dem Kalender herstellen zu können, brauchen wir die ID des Kalenders. Google gibt jedem Kalender eine eindeutige ID. Bei dem persönlichen Kalender ist das einfach die eigene Email Adresse (inkl. @gmail.com oder @googlemail.com). Bei allen anderen, z.B. für mehrere Personen freigebenen Kalendern, lässt sich die ID durch einen Klick auf den kleinen Pfeil neben dem Kalendernamen und dann auf “Kalendereinstellungen” finden. In den Einstellungen wir die ID als “Kalenderadresse” bezeichnet.
Mit dieser ID lassen wir unser Skript auf den Kalender zugreifen. Das Argument [Kalender ID] in der Methode getCalendarById() ersetzt Ihr dabei durch die ID Eures Kalenders:
function importCalendar() { var ss = SpreadsheetApp.getActive(); var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange("A2:D500"); cal = CalendarApp.getCalendarById("[Kalender ID]");
}
Die Google Apps Script Klasse Calendar hat eine untergeordnete Klasse namens CalendarEvent. Das ist die Klasse der Termine, die wir importieren möchten. Die Methode dafür heißt getEvents(). Wir verwenden unsere Variable cal, um mit dieser Methode alle Events eines bestimmten Intervalls in unser Objekt events zu laden:
// liefert das heutige Datum var today = new Date(); // Legt den Intervall auf 30 Tage fest var intervall = 30; // setzt das Startdatum der Abfrage auf den Zeitpunkt, der einem // Intervall von der Dauer unserer Variablen intervall entspricht. var start_date = new Date(today.getTime() - intervall *24*60*60*1000); // Dann folgt die eigentliche Abfrage der Events var events = cal.getEvents(start_date, today, {max:499});
Mit dem Parameter {max:499} begrenzen wir die Abfrage auf die letzten 499 Termine, denn mehr Platz haben wir in unserer Range nicht vorgesehen.
Mit Hilfe einer for-Schleife gehen wir nun durch die einzelnen Termine in unserem Objekt events und schreiben wie geplant in die erste Spalte den Title des Termins, in die zweite Spalte die Startzeit und in die dritte den Zeitpunkt, zu dem der Termin endet:
for (var i = 0; i <= events.length - 1; i++) { range.getCell(i+1,1).setValue(events[i].getTitle()); range.getCell(i+1,2).setValue(events[i].getStartTime()); range.getCell(i+1,3).setValue(events[i].getEndTime()); };
Unseren counter i müssen wir für die Methode getCell() um 1 erhöhen, weil i den Startwert 0 hat, die erste Spalte aber den Index 1. Bei dem Objekt events genügt ein i, weil das erste Element dort den Index 0 hat.
Das fertige Skript sie dann folgendermaßen aus:
function importCalendar() { // Verbindung zum Spreadshett var ss = SpreadsheetApp.getActive(); var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange("A2:D500"); // Verbindung zum Kalender cal = CalendarApp.getCalendarById("[Kalender ID]"); // Import der Daten aus dem Kalender var today = new Date(); var intervall = 30; var start_date = new Date(today.getTime()-intervall*24*60*60*1000); var events = cal.getEvents(start_date, today, {max:499}); for (var i = 0; i <= events.length - 1; i++) { range.getCell(i+1,1).setValue(events[i].getTitle()); range.getCell(i+1,2).setValue(events[i].getStartTime()); range.getCell(i+1,3).setValue(events[i].getEndTime()); }; }
Jetzt rufen wir das fertige Skript mit dem kleinen Play-Button im Skripteditor auf. Vor dem Ausführen werden wir noch dazu aufgefordert, das Skript zu speichern und ihm die Berechtigung auf unsere Daten zu gewähren. Ist das Skript ohne Fehler durchgelaufen, wechseln wir von Skripteditor wieder in unser Spreadsheet und sehen dort die Liste der Termine.
Weil das Ausführen von Skripten über den Skripteditor nicht übertrieben komfortabel ist, zeige ich in einem anderen Tutorial, wie sich die Menüs in Google Spreadsheets um eigene Funktionen erweitern lassen.
Keine Kommentare:
Kommentar veröffentlichen