Neulich dachte ich mir, es könnte doch interessant sein den privaten Google Kalender per Ruby auszulesen und auf dem Dashboard auszugeben.
Für den API Zugriff muss zunächst ein Projekt in der google cloud unter https://console.cloud.google.com/projectcreate?hl=de ein Projekt erstellt werden. Nachdem das Projekt angelegt wurde kann unter dem Menüpunkt IAM ein Dienstkonto erstellt werden. Bei dem Erstellen des Dienstkontos sollte gleich der Schlüssel generiert werden als json Datei, diese wird später noch benötigt(dienstbenutzer.json).
Um die Daten abrufen zu können, muss das Dienstkonto auf den Google Kalender berechtigt werden.
Folgende gems wurden installiert: google-api-client, google-apis-calendar_v3, googleauth, json
Das Script selbst ist wie folgt aufgebaut:
require 'google/apis/calendar_v3'
require 'googleauth'
require 'json'
t = Time.now
zeit = t.strftime("%Y-%d-%mT%H:%M:%Sz")
content = Google::Apis::CalendarV3::CalendarService.new
scope = 'https://www.googleapis.com/auth/calendar.readonly'
content.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open('./dienstbenutzer.json'),
scope: scope)
content.authorization.fetch_access_token!
termine = content.list_events(calenderid='<EmailAdresse des Kalenders>' )
events = termine.items.map do |e|
{
title: e.summary,
start: e.start.date || e.start.date_time.strftime('%d.%m.%y %H:%M')}
end
puts events
Als weiteren Parameter kann neben der calenderid auch time_min und time_max verwendet werden, um die Ausgabe der Termine zu begrenzen.