COVID'den beri takvimim stand-up'lar, ekip toplantıları ve müşteri aramalarıyla dolu.
Ancak bir etkinlik planlamak ve misafirleri davet etmek sıkıcı işlerdir. Bir Cuma günü, bunlara çok fazla zaman harcadıktan sonra, düşündüm ki –
Neden buna bu kadar çok zaman harcıyorum?
Bu yüzden işimi kolaylaştırmak için bir Etkinlik Planlayıcısı oluşturma fikri aklıma geldi!
Bu yazımda, etkinlikler oluşturabilen ve Google Meet bağlantılarını içeren e-posta davetlerini otomatik olarak gönderebilen bir Nodejs uygulamasının nasıl oluşturulacağını göstereceğim.
Heyecanlı mısınız? Ben de.
O halde daha fazla gecikmeden!
Hadi BAŞLAYALIM!
Projemizi başlatmak için bir Node.js ortamı kurmamız gerekiyor. O halde bir node projesi oluşturalım. Terminal'de aşağıdaki komutu çalıştırın.
npm init -y
Bu yeni bir Node.js projesini başlatacaktır.
Şimdi projemizin gerekli bağımlılıklarını yükleyeceğiz.
npm install express googleapis dotenv
Bu, aşağıdaki paketleri kuracaktır:
.env
dosyasından ortam değişkenlerini yükler.
Daha sonra API kimlik bilgileri gibi hassas bilgilerimizi güvenli bir şekilde saklamak için bir .env
klasörü oluşturacağız.
//.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
Şimdi, kök dizinde bir index.js
dosyası oluşturacağız ve basit bir express sunucusu kuracağız. Aşağıdaki koda bakın:
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}`); });
Burada, .env
dosyasından PORT numarasına erişmek için "dotenv" paketini kullanıyoruz.
Projenin en üstünde, dosyanın tamamında erişilebilir hale getirmek için dotenv.config()
kullanarak ortam değişkenlerini yüklüyoruz.
İlk olarak Google Cloud Console'a gideceğiz.
Daha sonra bu Dashboard'u alacağız. (Daha önce bir proje oluşturdum bu yüzden bunu alıyorum, siz başka bir şey alabilirsiniz).
Şimdi yeni bir proje başlatmak için 'Yeni Proje' butonuna tıklayacağız.
Sırada buna benzer bir şey var. Burada, Projemizin adını ve organizasyonunu ekleyeceğiz. Bu proje için bunu "Mail-integration-Demo" olarak tutuyorum. Sonra devam etmek için oluştur düğmesine tıklayacağız
Sonra, yan gezinme çubuğunda "API'ler ve Hizmetler"i göreceğiz. Bu bölümde, API'leri ve hizmetleri etkinleştirmek için bir alt menü var. Devam etmek için buna tıklayacağız.
Daha sonra bu projede kullanacağımız API'yi, yani Google Takvim API'sini aktifleştireceğiz.
Daha sonra OAuth Consent Ekranına geçeceğiz. Burada, Kullanıcı Türünü Harici olarak seçeceğiz. Ve devam etmek için Oluştur düğmesine basacağız.
Daha sonra uygulama kayıt sayfasına gideceğiz. Burada uygulamamız hakkında daha fazla bilgi ekleyeceğiz. Uygulamamızın adını ve kullanıcı desteği için bir e-posta adresi ekleyerek başlıyoruz.
Bu proje için projeye "Arindam's Mail Integration" adını vereceğim ve destek için kendi e-posta adresimi kullanacağım.
Daha sonra Uygulamanın kapsamını tanımlamamız gerekiyor.
Scopes'ta bu proje için userinfo.email
ve userinfo.profile
gibi gerekli izinleri ekleyeceğiz.
Daha sonra uygulamamıza bir adet test kullanıcısı ekleyeceğiz.
İşte bu kadar. Uygulamamız platforma kayıtlıdır.
Şimdi, OAuth İstemci Kimliği sırrımızı oluşturacağız. Bunun için, Kimlik Bilgisi Oluşturma kısmına geçeceğiz.
Burada, uygulamamızın türünü ve adını ekleyeceğiz. Bu proje için, bu bir web uygulaması ve adı Arindam's Mail Demo.
Ayrıca bir Yönlendirme URL'si ekledik. Bu proje için bu http://localhost:8000/auth/redirect
olacak.
Daha sonra OAuth kimlik bilgilerini alacağız.
Şimdi API Anahtarları oluşturacağız.
Tüm bunları yaptıktan sonra .env
dosyamızı daha önce oluşturduğumuz API anahtarları ve OAuth Kimlik Bilgileri ile güncelleyeceğiz.
Bununla birlikte, bu proje için Google Cloud konsolumuzu ayarladık, şimdi bir sonraki bölüme geçelim
Şimdiye kadar temel proje kurulumumuzu yaptık. Şimdi, OAuth2 Kimlik Doğrulamasını Projemize entegre edeceğiz. Bu, uygulamamızın Google servisleriyle güvenli bir şekilde etkileşime girmesini sağlar. Bunun için, öncelikle gerekli paketleri index.js
dosyasına aktaracağız.
const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv');
Daha sonra Google Takvim API'si için gereken erişim kapsamını tanımlayacağız.
const scopes = ['https://www.googleapis.com/auth/calendar'];
Daha sonra .env
dosyasında sakladığımız kimlik bilgilerini kullanarak OAuth 2 istemcisini yapılandıracağız.
// OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL );
OAuth 2 Yapılandırması'ndan sonra Kullanıcılarımızı doğrulamak için bir Rota oluşturacağız.
app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } );
Kullanıcılarımız bu yola başvurduklarında Google'ın kimlik doğrulama sayfasına yönlendirilecek ve burada uygulamamıza ilişkin belirli izinler istenecek.
Başarılı kimlik doğrulamasından sonra Google, kullanıcıyı Yönlendirme URL'mize ( /auth/redirect
) yönlendirecektir.
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.'); } );
Burada, Sorgu'dan yenileme belirteçlerini alıyoruz ve bunları oauth2Client
kimlik bilgileri olarak saklıyoruz. Bu kimlik bilgileri, Google Takvim API'sine istekler yapmamıza yardımcı olacak.
İşte index.js
tam kodu:
//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.'); } );
İşte en önemli kısım geliyor! Bu bölümde Google Takvim'de bir etkinlik planlayacağız!
Başlamak için Google Takvim API istemcisini başlatacağız.
const calendar = google.calendar({ version: 'v3', auth: oauth2Client });
Daha sonra, Özet, Yer, Başlangıç ve Bitiş zamanı vb. gibi olayın tüm ayrıntılarını ekleyeceğimiz bir olay nesnesi oluşturacağız.
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' }, };
Daha sonra event'i oluşturacağımız Route'u ( /create-event
) oluşturacağız.
Burada, calendar.events.insert()
metodunu kullanarak kullanıcının Takvimine bir etkinlik ekliyoruz.
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); } } );
Bununla birlikte Google Takvim'de etkinlikleri dinamik olarak planlayabiliriz.
Şimdiye kadar, Google Takvim'de basit bir etkinliğin nasıl oluşturulacağını inceledik. Bu bölümde, o Etkinliğe bir Google Meet Bağlantısı nasıl ekleneceğini inceleyeceğiz!
Bunun için, önceki bölümde oluşturduğumuz olay nesnesini güncelleyeceğiz. Bir Google Meet bağlantısı için oluşturma isteğini belirtmek üzere bir conferenceData
özelliği ekleyeceğiz.
conferenceData: { createRequest: { requestId: uuid(), } },
Ayrıca, misafirleri Etkinliğe davet etmek için bir attendees
özelliği ekleyeceğiz. İşte bunun basit bir örneği:
attendees: [ {email: '[email protected]'}, ]
Şimdi Event nesnesi şu şekilde görünüyor:
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]'}, ] };
Bir sonraki adımda event ekleme adımında conferenceDataVersion
parametresini ekleyeceğiz.
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event });
Bu, Google Meet Bağlantısı olan bir Etkinlik oluşturacaktır. Bağlantıyı şu şekilde bir yanıt olarak da paylaşabiliriz:
res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink });
Yani, projemizi neredeyse bitirdik, sadece son dokunuşlar kaldı. Şu ana kadar projemiz etkinliği doğrudan davetli misafirlerin takvimine ekleyecek.
Ancak, bu olaylar hakkında onları bilgilendirmek için bir Mail göndermemiz gerekiyor. Bunun için, olay oluşturma kısmına sendUpdates: 'all',
bir parametre eklemeliyiz. Bununla, uygulama davet edilen misafirlere otomatik olarak e-posta gönderecektir.
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event });
Bu eklemeyle birlikte projemiz artık hem etkinlik oluşturmayı hem de e-posta bildirimlerini sorunsuz bir şekilde gerçekleştiriyor.
Projemizin kodlama kısmı tamamlandı. Şimdi çalışıp çalışmadığına bakalım!
İşte bunun için projeyi başlatalım!
npm run start
Ve Sunucumuzu 8000 portunda başlattık! Şimdi, kullanıcıyı doğrulamak için http://localhost:8000/auth/ rotasına gideceğiz. Bizi buna benzer bir şeye yönlendirecek:
Uygulama için bazı izinler isteyecektir.
code
sorgu parametresi ile /auth/redirect
rotasına yönlendirecektir.
Kullanıcıyı başarıyla doğruladıktan sonra, Etkinliği planlamak için http://localhost:8000/create-event rotasına gideceğiz.
Harika! Etkinliğimizin bir Google Meet bağlantısıyla oluşturulduğu anlamına geliyor.
Etkinlik oluşturma sürecinin doğru bir şekilde çalıştığını doğrulamak için Google Takvimimizi kontrol edelim
Harika! Etkinliğimiz oluşturuldu, bu da Etkinlik oluşturma rotasının mükemmel bir şekilde çalıştığı anlamına geliyor! Ayrıca bir Davet e-postası da aldık:
Harika! Uygulamamız mükemmel çalışıyor!
Bununla birlikte, Google Takvim'i Node.js uygulamamıza entegre ettik. Aşağıdaki makalelerde, Google Takvim ile daha fazla kullanım örneğini keşfedeceğiz.
O zamana kadar bizi izlemeye devam edin!
Bu blog yazısını faydalı bulduysanız, lütfen bundan faydalanabilecek diğer kişilerle paylaşmayı düşünün. Ayrıca Javascript, React ve diğer web Geliştirme konuları hakkında daha fazla içerik için beni takip edebilirsiniz.
Ücretli işbirliği için bana şu adresten e-posta gönderin: [email protected]
Twitter , LinkedIn , YouTube ve GitHub'da bana ulaşın.
Okuduğunuz için teşekkürler :)