Seit COVID ist mein Kalender voll mit Stand-ups, Teambesprechungen und Kundengesprächen.
Allerdings sind die Planung einer Veranstaltung und das Einladen von Gästen langweilige Aufgaben. Eines Freitags, nachdem ich so viel Zeit damit verbracht hatte, dachte ich –
Warum verbringe ich so viel Zeit damit?
Daher kam ich auf die Idee, einen Event-Scheduler zu erstellen, um meine Arbeit zu vereinfachen!
In diesem Artikel zeige ich Ihnen, wie Sie eine Nodejs-Anwendung erstellen, die Ereignisse erstellen und automatisch E-Mail-Einladungen mit Google Meet-Links versenden kann.
Aufgeregt? Ich auch.
Also, ohne weitere Verzögerung!
Lasst uns beginnen!
Um unser Projekt zu starten, müssen wir eine Node.js-Umgebung einrichten. Lassen Sie uns also ein Node-Projekt erstellen. Führen Sie den folgenden Befehl im Terminal aus.
npm init -y
Dadurch wird ein neues Node.js-Projekt initialisiert.
Jetzt installieren wir die erforderlichen Abhängigkeiten unseres Projekts.
npm install express googleapis dotenv
Dadurch werden die folgenden Pakete installiert:
.env
Datei.
Als Nächstes erstellen wir einen .env
Ordner, um unsere vertraulichen Informationen wie API-Anmeldeinformationen sicher zu speichern.
//.env PORT = YOUR_PORT || 8000 CLIENT_ID = YOUR_CLIENT_ID CLIENT_SECRET = YOUR_CLIENT_SECRET REDIRECT_URL = http://localhost:8000/auth/redirect API_KEY = YOUR_API_KEY
Jetzt erstellen wir eine Datei index.js
im Stammverzeichnis und richten einen einfachen Express-Server ein. Siehe den folgenden Code:
const express = require("express"); const dotenv = require("dotenv"); dotenv.config(); const app = express(); const port = process.env.PORT || 8000; app.get("/", (req, res) => { res.send("Hello World"); }); app.listen(port, () => { console.log(`Server running on port ${port}`); });
Hier verwenden wir das Paket „dotenv“, um auf die PORT-Nummer aus der .env
Datei zuzugreifen.
Oben im Projekt laden wir Umgebungsvariablen mit dotenv.config()
um sie in der gesamten Datei zugänglich zu machen.
Zuerst gehen wir zur Google Cloud Console .
Dann erhalten wir dieses Dashboard. (Ich habe zuvor ein Projekt erstellt, deshalb erhalte ich dieses, Sie erhalten möglicherweise etwas anderes.)
Jetzt klicken wir auf die Schaltfläche „Neues Projekt“, um ein neues Projekt zu starten.
Als nächstes erhalten wir so etwas. Hier fügen wir den Namen und die Organisation unseres Projekts hinzu. Für dieses Projekt behalte ich es als „Mail-integration-Demo“. Dann klicken wir auf die Schaltfläche „Erstellen“, um fortzufahren
Als Nächstes finden wir in der seitlichen Navigationsleiste „APIs und Dienste“. In diesem Abschnitt gibt es ein Untermenü zum Aktivieren von APIs und Diensten. Klicken Sie darauf, um fortzufahren.
Als Nächstes aktivieren wir die API, die wir in diesem Projekt verwenden werden, also die Google Kalender-API.
Danach gehen wir zum OAuth-Zustimmungsbildschirm. Hier wählen wir den Benutzertyp „Extern“ aus. Und wir klicken auf die Schaltfläche „Erstellen“, um fortzufahren.
Anschließend gehen wir zur App-Registrierungsseite. Hier fügen wir weitere Informationen zu unserer Anwendung hinzu. Wir beginnen mit dem Namen unserer App und einer E-Mail-Adresse für den Benutzersupport.
Für dieses Projekt werde ich es „Arindams Mail-Integration“ nennen und für den Support meine eigene E-Mail-Adresse verwenden.
Als nächstes müssen wir den Umfang der Anwendung definieren.
In den Bereichen fügen wir die erforderlichen Berechtigungen wie userinfo.email
und userinfo.profile
für dieses Projekt hinzu.
Danach fügen wir unserer Anwendung einen Testbenutzer hinzu.
Das ist alles. Unsere Anwendung ist bei der Plattform registriert.
Jetzt erstellen wir unser OAuth-Client-ID-Geheimnis. Dazu gehen wir zum Abschnitt „Anmeldeinformationen erstellen“.
Hier fügen wir den Typ unserer Anwendung und ihren Namen hinzu. Für dieses Projekt handelt es sich um eine Webanwendung und ihr Name lautet Arindam's Mail Demo.
Außerdem haben wir eine Umleitungs-URL hinzugefügt. Für dieses Projekt lautet sie http://localhost:8000/auth/redirect
.
Und dann erhalten wir die OAuth-Anmeldeinformationen.
Als Nächstes erstellen wir API-Schlüssel.
Nachdem wir all dies getan haben, aktualisieren wir unsere .env
Datei mit den API-Schlüsseln und den OAuth-Anmeldeinformationen, die wir zuvor generiert haben.
Damit haben wir unsere Google Cloud-Konsole für dieses Projekt eingerichtet. Fahren wir nun mit dem nächsten Abschnitt fort.
Bis jetzt haben wir unser grundlegendes Projekt-Setup abgeschlossen. Jetzt integrieren wir die OAuth2-Authentifizierung in unser Projekt. Dadurch kann unsere Anwendung sicher mit Google-Diensten interagieren. Dazu importieren wir zunächst die erforderlichen Pakete in die Datei index.js
.
const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv');
Anschließend definieren wir den erforderlichen Zugriffsumfang für die Google Kalender-API.
const scopes = ['https://www.googleapis.com/auth/calendar'];
Als Nächstes konfigurieren wir den OAuth 2-Client mit den Anmeldeinformationen, die wir in der .env
Datei gespeichert haben.
// OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL );
Nach der OAuth 2-Konfiguration erstellen wir eine Route zur Authentifizierung unserer Benutzer.
app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } );
Wenn unsere Benutzer diesen Weg wählen, werden sie auf die Authentifizierungsseite von Google weitergeleitet, wo sie nach bestimmten Berechtigungen für unsere Anwendung gefragt werden.
Nach erfolgreicher Authentifizierung leitet Google den Benutzer zu unserer Weiterleitungs-URL ( /auth/redirect
) weiter.
app.get("/auth/redirect", async (req, res) => { const {tokens} = await oauth2Client.getToken(req.query.code); oauth2Client.setCredentials(tokens); res.send('Authentication successful! Please return to the console.'); } );
Hier erhalten wir die Aktualisierungstoken aus der Abfrage und speichern sie als Anmeldeinformationen im oauth2Client
. Diese Anmeldeinformationen helfen uns dabei, Anfragen an die Google Kalender-API zu stellen.
Hier ist der vollständige Code für index.js
:
//index.js const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv'); const app = express(); dotenv.config(); const port = process.env.PORT || 8000; app.get('/', (req, res) => { res.send('Hello World'); } ); // Define the scope of access for the Google Calendar API. const scopes = ['https://www.googleapis.com/auth/calendar']; // OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL ); app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } ); app.get("/auth/redirect", async (req, res) => { const {tokens} = await oauth2Client.getToken(req.query.code); oauth2Client.setCredentials(tokens); res.send('Authentication successful! Please return to the console.'); } );
Hier kommt der wichtigste Teil! In diesem Abschnitt planen wir ein Ereignis in Google Kalender!
Zu Beginn initialisieren wir den Google Kalender API-Client.
const calendar = google.calendar({ version: 'v3', auth: oauth2Client });
Als Nächstes erstellen wir ein Ereignisobjekt, in das wir alle Details des Ereignisses einfügen, beispielsweise Zusammenfassung, Ort, Start- und Endzeit usw.
const event = { summary: 'Tech Talk with Arindam', location: 'Google Meet', description: "Demo event for Arindam's Blog Post.", start: { dateTime: "2024-03-14T19:30:00+05:30", timeZone: 'Asia/Kolkata' }, end: { dateTime: "2024-03-14T20:30:00+05:30", timeZone: 'Asia/Kolkata' }, };
Danach erstellen wir eine Route ( /create-event
), wo wir das Ereignis erstellen.
Hier fügen wir mit der Methode calendar.events.insert()
ein Ereignis in den Kalender des Benutzers ein.
app.get('/create-event', async (req, res) => { try { const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client, resource: event }); res.send({ status: 200, message: 'Event created', }); } catch (err) { console.log(err); res.send(err); } } );
Damit können wir Ereignisse dynamisch im Google Kalender planen.
Bisher haben wir untersucht, wie man ein einfaches Ereignis in Google Kalender erstellt. In diesem Abschnitt erfahren Sie, wie Sie diesem Ereignis einen Google Meet-Link hinzufügen!
Dazu aktualisieren wir das Ereignisobjekt, das wir im vorherigen Abschnitt erstellt haben. Wir fügen eine Eigenschaft conferenceData
hinzu, um die Erstellungsanforderung für einen Google Meet-Link anzugeben.
conferenceData: { createRequest: { requestId: uuid(), } },
Wir fügen auch eine attendees
hinzu, um Gäste zum Event einzuladen. Hier ist ein einfaches Beispiel dafür:
attendees: [ {email: '[email protected]'}, ]
Jetzt sieht das Event-Objekt folgendermaßen aus:
const event = { summary: 'Tech Talk with Arindam', location: 'Google Meet', description: "Demo event for Arindam's Blog Post.", start: { dateTime: "2024-03-14T19:30:00+05:30", timeZone: 'Asia/Kolkata' }, end: { dateTime: "2024-03-14T20:30:00+05:30", timeZone: 'Asia/Kolkata' }, colorId: 1, conferenceData: { createRequest: { requestId: uuid(), } }, attendees: [ {email: '[email protected]'}, ] };
Als Nächstes fügen wir im Schritt zum Einfügen des Ereignisses den Parameter conferenceDataVersion
hinzu.
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event });
Dadurch wird ein Event mit einem Google Meet-Link erstellt. Wir können den Link auch als Antwort wie folgt teilen:
res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink });
Wir sind also fast fertig mit unserem Projekt, es fehlt nur noch der letzte Schliff. Bis jetzt fügt unser Projekt die Veranstaltung direkt zum Kalender der eingeladenen Gäste hinzu.
Um sie jedoch über diese Ereignisse zu benachrichtigen, müssen wir eine E-Mail senden. Dazu müssen wir im Teil zur Ereigniserstellung einen Parameter sendUpdates: 'all',
hinzufügen. Damit sendet die Anwendung automatisch E-Mails an die eingeladenen Gäste.
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event });
Mit dieser Ergänzung verarbeitet unser Projekt jetzt nahtlos sowohl die Ereigniserstellung als auch E-Mail-Benachrichtigungen.
Der Codierungsteil unseres Projekts ist abgeschlossen. Jetzt wollen wir sehen, ob es funktioniert oder nicht!
Dafür starten wir das Projekt!
npm run start
Und wir haben unseren Server auf Port 8000 gestartet! Jetzt gehen wir zur Route http://localhost:8000/auth/, um den Benutzer zu authentifizieren. Sie leitet uns zu etwas wie diesem weiter:
Sie werden um einige Berechtigungen für die Anwendung gebeten.
Es erfolgt eine Weiterleitung zur Route /auth/redirect
mit dem Abfrageparameter code
.
Nachdem der Benutzer erfolgreich authentifiziert wurde, wechseln wir zur Route http://localhost:8000/create-event, um das Ereignis zu planen.
Fantastisch! Das bedeutet, dass unsere Veranstaltung mit einem Google Meet-Link erstellt wird.
Um zu überprüfen, ob der Prozess zur Ereigniserstellung ordnungsgemäß funktioniert, überprüfen wir unseren Google Kalender
Fantastisch! Unser Event wurde erstellt, was bedeutet, dass der Event-Erstellungsprozess einwandfrei funktioniert! Außerdem haben wir eine Einladungsmail erhalten:
Großartig! Unsere Anwendung funktioniert perfekt!
Damit haben wir Google Kalender in unsere Node.js-App integriert. In den folgenden Artikeln werden wir weitere Anwendungsfälle mit Google Kalender untersuchen.
Bis dahin, bleiben Sie dran!
Wenn Sie diesen Blogbeitrag hilfreich fanden, teilen Sie ihn bitte mit anderen, die davon profitieren könnten. Sie können mir auch folgen, um weitere Inhalte zu Javascript, React und anderen Webentwicklungsthemen zu erhalten.
Für eine bezahlte Zusammenarbeit schreiben Sie mir eine E-Mail an: [email protected]
Verbinden Sie sich mit mir auf Twitter , LinkedIn , YouTube und GitHub .
Vielen Dank fürs Lesen :)