# Allgemein, Technik

.NET Anwendung erzeugt Google Calender Eintrag

Auf der Suche nach einer Möglichkeit aus einer C#/.NET Anwendung auf den Google Kalender Eintrag zu erzeugen ware ich lange auf der Suche nach einem einfach verständlichen Beispiel. Hierbei war die Suche recht lange vergeben, deshalb hier ein Beispiel zum Verbindungsaufbau.

Google API Schnittstelle

Zuerst ist die Schnittstelle zu Google notwendig. Hierfür nutze ich die OAuth2. Hierfür müssen wir per Google Developer Console ein neues Projekt erstellen. In diesem muss dann zusätzlich der Calender API aktiviert werden.

Nach dem erstellen eines neuen Projekts wechseln wir in eine neue Ansicht, hier wählen wir unter “APIs und Authentifizierung” den Reiter “APIs“.

googlekalender_04

Hier denn alle APIs deaktivieren, außer den “Calender API”

googlekalender_02

Dann werden auch die Zugangsdaten notwendig. Hierfür sind dann Zugangsdaten notwendig. Dafür wechseln wir in den Reiter “Zugangsdaten

googlekalender_05

Hier erstellen wir eine neue “Client-ID“. Hier wählen wir dann “Installierte Anwendungen

googlekalender_03

 

Im Zustimmungsbildschrim tragen wir dann eine E-Mail Adresse ein sowie ein Produktname, der Rest kann frei bleiben.

googlekalender_06

Hier dann noch einmal “Sonsige” als Installierte Anwendungstyp auswählen und zu guter letzt auf “Client-ID erstellen” klicken.

googlekalender_07

 

Als Resultat erhalten wir die Client-ID, Clientschlüssel.

googlekalender_08

 C# / .NET Applikation

Die fehlende Pakete, von Google, können wir bequem, durch Nu-GET installieren.

Hierfür einfach in Visual Studio die Console öffnen.

googlekalender_09

In geöffneten Fenster installieren wir die notwendigen Abhängigkeiten durch

PM> Install-Package Google.Apis.Calendar.v3

googlekalender_10

In einer Anwendung fügen wir dann den Code ein, die Parameter dann durch die neu erstellen ersetzten. Bei der ersten Ausführung des Programms öffnet sich dann der Webbrowser und wir können Bestätigen das wir auf die Daten bei Google zugreifen wollen. Beim nächsten Start bleibt es uns dann ersparrt.

private CalendarService service;
        private const string CLId = "123456789123456789123456789123456789.apps.googleusercontent.com";
        private const string CLSecret = "ABCDEFGABCDEFG";
        private const string AppName = "api-project-123123123";

        public Form1()
        {
            InitializeComponent();
            Init_Kalender();
        }

        public void Init_Kalender()
        {
            // Verbindung zum Kalender herstellen
            List<String> scope = new List<string>();
            scope.Add(CalendarService.Scope.Calendar);
            ClientSecrets CS = new ClientSecrets();
            CS.ClientId = CLId;
            CS.ClientSecret = CLSecret;
            UserCredential UC = GoogleWebAuthorizationBroker.AuthorizeAsync(CS, scope, "user", CancellationToken.None, new FileDataStore(AppName)).Result;

            BaseClientService.Initializer initializer = new BaseClientService.Initializer();
            initializer.HttpClientInitializer = UC;
            initializer.ApplicationName = AppName;
            service = new CalendarService(initializer);
        }

        private void simpleButton1_Click(object sender, EventArgs e) //Beim klicken des Buttons wird das Event ausgeführt
        {
            string str = "Ich bin ein neuer Kalendereintrag"; //Name des Kalendereintags
            string CalenderID = "mail@googlemail.com"; //Kalendername

            try
            {
                Event myEvent = new Event(); //Neues Eintrags Erzeugen

                EventDateTime EStart = new EventDateTime();
                EStart.DateTime = DateTime.Now;
                EventDateTime EEnd = new EventDateTime();
                EEnd.DateTime = DateTime.Now.AddHours(+1);

                myEvent.Start = EStart;
                myEvent.End = EEnd;
                myEvent.Summary = str; //Name des Eintrags

                string res = service.Events.Insert(myEvent, CalenderID).Execute().Summary; //Rückgabe des Resultats
                MessageBox.Show(res);
            }
            catch (Exception f)
            {
                MessageBox.Show(f.ToString());
            }
        }

Nach dem erfolgreichen ausführen können wir dann im Google Kalender unseren neuen Eintrag ansehen.

googlekalender