Introdução Desde a COVID, minha agenda tem estado cheia de reuniões de equipe, reuniões de equipe e ligações com clientes. No entanto, agendar um evento e convidar convidados são tarefas chatas. Uma sexta-feira, depois de gastar muito tempo com isso, pensei – Por que estou gastando tanto tempo com isso? Foi assim que tive a ideia de criar um agendador de eventos para simplificar meu trabalho! Neste artigo, mostrarei como criar um aplicativo Nodejs que pode criar eventos e enviar convites por e-mail automaticamente com links do Google Meet. Animado? Eu também. Então, sem mais delongas! Vamos COMEÇAR! Configuração do projeto: 1. Crie um projeto Node.js: Para iniciar nosso projeto, precisamos configurar um ambiente Node.js. Então, vamos criar um projeto node. Execute o seguinte comando no Terminal. npm init -y Isso inicializará um novo projeto Node.js. 2. Instalar dependências: Agora, instalaremos as dependências necessárias do nosso projeto. npm install express googleapis dotenv Isso instalará os seguintes pacotes: express: uma estrutura web popular para Node.js dotenv: carrega variáveis de ambiente de um arquivo . .env googleapis: Fornece acesso a várias APIs do Google 3. Configurar variáveis de ambiente: Em seguida, criaremos uma pasta para armazenar com segurança nossas informações confidenciais, como credenciais de API. .env //.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 4. Crie o Express Server: Agora, criaremos um arquivo no diretório raiz e configuraremos um servidor express básico. Veja o código a seguir: index.js 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}`); }); Aqui, estamos usando o pacote "dotenv" para acessar o número da PORTA do arquivo . .env No topo do projeto, estamos carregando variáveis de ambiente usando para torná-lo acessível em todo o arquivo. dotenv.config() Configurando o Google Console Primeiro, iremos para o . Google Cloud Console Então teremos este Painel. (Eu já criei um projeto anteriormente, é por isso que estou recebendo isto, você pode receber outra coisa). Agora, clicaremos no botão "Novo Projeto" para iniciar um novo projeto. A seguir, teremos algo assim. Aqui, adicionaremos o nome e a organização do nosso Projeto. Para este projeto, estou mantendo isso como "Mail-integration-Demo". Então clicaremos no botão criar para prosseguir Em seguida, na barra de navegação lateral, teremos "APIs e serviços". Dentro desta seção, há um submenu para habilitar APIs e serviços. Clicaremos nele para prosseguir. Em seguida, habilitaremos a API que usaremos neste projeto, ou seja, a API do Google Calender. Depois disso, iremos para a Tela de Consentimento OAuth. Aqui, selecionaremos o Tipo de Usuário como Externo. E pressionaremos o botão Criar para prosseguir. Então, iremos para a página de registro do aplicativo. Aqui, adicionaremos mais informações sobre nosso aplicativo. Começamos adicionando o nome do nosso aplicativo e um endereço de e-mail para suporte ao usuário. Para este projeto, vou chamá-lo de "Integração de e-mail do Arindam" e usar meu próprio endereço de e-mail para suporte. Em seguida, temos que definir o escopo da Aplicação. Nos Escopos, adicionaremos permissões necessárias, como e para este projeto. userinfo.email userinfo.profile Depois disso, adicionaremos um usuário de teste ao nosso aplicativo. Pronto. Nosso aplicativo está registrado na plataforma. Agora, criaremos nosso segredo OAuth Client ID. Para isso, iremos para a parte Create Credential. Aqui, adicionaremos o tipo do nosso aplicativo e seu nome. Para este projeto, é um aplicativo web, e seu nome é Arindam's Mail Demo. Também adicionamos uma URL de redirecionamento. Para este projeto, será . http://localhost:8000/auth/redirect E então obteremos a credencial OAuth. Em seguida, criaremos chaves de API. Depois de fazer tudo isso, atualizaremos nosso arquivo com as chaves de API e as credenciais OAuth que geramos anteriormente. .env Com isso, configuramos nosso console do Google Cloud para este projeto, agora vamos para a próxima seção Autenticação OAuth 2: Até agora, fizemos nossa configuração básica do projeto. Agora, integraremos a Autenticação OAuth2 em nosso Projeto. Isso permite que nosso aplicativo interaja com segurança com os serviços do Google. Para isso, primeiro, importaremos os pacotes necessários para o arquivo . index.js const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv'); Em seguida, definiremos o escopo de acesso necessário para a API do Google Agenda. const scopes = ['https://www.googleapis.com/auth/calendar']; Em seguida, configuraremos o cliente OAuth 2 usando as credenciais que armazenamos no arquivo . .env // OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL ); Após a configuração do OAuth 2, criaremos uma rota para autenticar nossos usuários. app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } ); Quando nossos usuários seguirem esse caminho, eles serão redirecionados para a página de autenticação do Google, onde serão solicitadas permissões específicas para nosso aplicativo. Após a autenticação bem-sucedida, o Google redirecionará o usuário para nossa URL de redirecionamento ( ) /auth/redirect 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.'); } ); Aqui, estamos obtendo os tokens de atualização da Query e armazenando-os como credenciais no . Essas credenciais nos ajudarão a fazer solicitações à API do Google Calendar. oauth2Client Aqui está o código completo para : 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.'); } ); Agendando eventos no Google Agenda Aqui vem a parte mais importante! Nesta seção, vamos agendar um evento no Google Calendar! Para começar, inicializaremos o cliente da API do Google Agenda. const calendar = google.calendar({ version: 'v3', auth: oauth2Client }); Em seguida, criaremos um objeto de evento onde adicionaremos todos os detalhes do evento, como Resumo, Local, Hora de Início e Término, etc. 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' }, }; Depois disso, criaremos uma Rota ( ) onde criaremos o evento. /create-event Aqui estamos inserindo um evento no Calendário do usuário usando o método . calendar.events.insert() 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); } } ); Com isso, podemos agendar eventos dinamicamente no Google Agenda. Adicionando link do Google Meet: Até agora, exploramos como criar um evento simples no Google Calendar. Nesta seção, exploraremos como adicionar um Google Meet Link a esse Evento! Para isso, atualizaremos o objeto event que criamos na seção anterior. Adicionaremos uma propriedade para especificar a solicitação de criação de um link do Google Meet. conferenceData conferenceData: { createRequest: { requestId: uuid(), } }, Também adicionaremos uma propriedade para convidar pessoas para o Event. Aqui está um exemplo simples disso: attendees attendees: [ {email: 'arindammajumder2020@gmail.com'}, ] Agora, o objeto Event se parece com isto: 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: 'arindammajumder2020@gmail.com'}, ] }; Em seguida, na etapa de inserção do evento, adicionaremos o parâmetro a ele. conferenceDataVersion const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event }); Isso criará um Evento com um Link do Google Meet. Também podemos compartilhar o link como uma resposta como esta: res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink }); Enviando lembrete aos participantes: Então, estamos quase terminando nosso projeto, falta apenas o toque final. Até agora, nosso projeto adicionará o evento diretamente ao calendário dos convidados. No entanto, para notificá-los sobre esses eventos, temos que enviar um Mail. Para isso, temos que adicionar um parâmetro na parte de criação do evento. Com isso, o aplicativo enviará automaticamente e-mails para os convidados. sendUpdates: 'all', const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event }); Com essa adição, nosso projeto agora gerencia perfeitamente tanto a criação de eventos quanto as notificações por e-mail. Testando o aplicativo: A parte de codificação do nosso projeto está concluída. Agora, vamos ver se está funcionando ou não! Para isso, vamos começar o projeto! npm run start E iniciamos nosso Servidor na porta 8000! Agora, iremos para a rota para autenticar o usuário. Ele nos redirecionará para algo assim: http://localhost:8000/auth/ Ele pedirá alguma permissão para o aplicativo. Ele redirecionará para a rota com o parâmetro de consulta . /auth/redirect code Após autenticar o usuário com sucesso, iremos para a rota para agendar o Evento. http://localhost:8000/create-event Incrível! Isso significa que nosso evento é criado com um link do Google Meet. Para verificar se o processo de criação de eventos está funcionando corretamente, vamos verificar nosso Google Agenda Incrível! Nosso Evento foi criado, o que significa que a rota de criação de Eventos está funcionando perfeitamente! E também recebemos um e-mail de Convite: Ótimo! Nosso aplicativo está funcionando perfeitamente! Com isso, integramos o Google Calendar ao nosso aplicativo Node.js. Nos artigos a seguir, exploraremos mais casos de uso com o Google Calendar. Até lá, fique ligado! Conclusão Se você achou este post de blog útil, considere compartilhá-lo com outras pessoas que possam se beneficiar. Você também pode me seguir para mais conteúdo sobre Javascript, React e outros tópicos de desenvolvimento web. Para colaboração paga, envie um e-mail para: arindammajumder2020@gmail.com Conecte-se comigo no , , e . Twitter LinkedIn YouTube GitHub Obrigado pela leitura :)