導入 COVID-19以来、私のカレンダーはスタンドアップミーティング、チームミーティング、クライアントとの電話会議でいっぱいです。 しかし、イベントのスケジュールを立てたり、ゲストを招待したりするのは退屈な作業です。ある金曜日、これに時間をかけすぎた後、私は思いました。 なぜ私はこれにこれほど多くの時間を費やしているのでしょうか? そこで、作業を簡素化するためにイベント スケジューラを作成するというアイデアが浮かびました。 この記事では、イベントを作成し、Google Meet リンクを含むメール招待状を自動的に送信できる Nodejs アプリケーションを作成する方法を説明します。 興奮してる?私もだよ。 では、これ以上遅れずに! さあ始めましょう! プロジェクトのセットアップ: 1. Node.js プロジェクトを作成する: プロジェクトを開始するには、Node.js 環境をセットアップする必要があります。それでは、Node プロジェクトを作成しましょう。ターミナルで次のコマンドを実行します。 npm init -y これにより、新しい Node.js プロジェクトが初期化されます。 2. 依存関係をインストールします。 ここで、プロジェクトに必要な依存関係をインストールします。 npm install express googleapis dotenv これにより、次のパッケージがインストールされます。 express: Node.js 用の人気の Web フレームワーク dotenv: ファイルから環境変数を読み込みます。 .env googleapis: さまざまなGoogle APIへのアクセスを提供します 3. 環境変数を設定する: 次に、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. Expressサーバーを作成する: ここで、ルート ディレクトリに ファイルを作成し、基本的な Express サーバーをセットアップします。次のコードを参照してください。 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}`); }); ここでは、「dotenv」パッケージを使用して、 ファイルからポート番号にアクセスしています。 .env プロジェクトの先頭で、 を使用して環境変数を読み込み、ファイル全体でアクセスできるようにしています。 dotenv.config() Google コンソールの設定 まず、 に移動します。 Google Cloud Console すると、このダッシュボードが表示されます。(以前に 1 つのプロジェクトを作成したので、これが表示されます。別のものが表示される可能性があります)。 ここで、「新しいプロジェクト」ボタンをクリックして、新しいプロジェクトを開始します。 次に、次のような画面が表示されます。ここで、プロジェクトの名前と組織を追加します。このプロジェクトでは、「Mail-integration-Demo」のままにします。次に、作成ボタンをクリックして続行します。 次に、サイドナビゲーションバーに「API とサービス」が表示されます。このセクションには、API とサービスを有効にするサブメニューがあります。これをクリックして続行します。 次に、このプロジェクトで使用する API、つまり Google カレンダー API を有効にします。 その後、OAuth 同意画面に進みます。ここで、ユーザー タイプとして外部を選択します。次に、[作成] ボタンを押して続行します。 次に、アプリ登録ページに移動します。ここで、アプリケーションに関する詳細情報を追加します。まず、アプリの名前とユーザー サポート用のメール アドレスを追加します。 このプロジェクトでは、「Arindam のメール統合」という名前を付け、サポート用に自分のメール アドレスを使用します。 次に、アプリケーションの範囲を定義する必要があります。 スコープでは、このプロジェクトに必要な や などの権限を追加します。 userinfo.email userinfo.profile その後、アプリケーションにテストユーザーを 1 人追加します。 これで完了です。アプリケーションがプラットフォームに登録されました。 ここで、OAuth クライアント ID シークレットを作成します。そのためには、「資格情報の作成」部分に進みます。 ここで、アプリケーションの種類と名前を追加します。このプロジェクトでは、Web アプリケーションであり、名前は Arindam's Mail Demo です。 また、リダイレクト URL を 1 つ追加しました。このプロジェクトでは、 になります。 http://localhost:8000/auth/redirect 次に、OAuth 認証情報を取得します。 次に、API キーを作成します。 これをすべて実行したら、先ほど生成した API キーと OAuth 認証情報を使用して ファイルを更新します。 .env これで、このプロジェクト用のGoogle Cloudコンソールの設定が完了しました。次のセクションに進みましょう。 OAuth 2 認証: これまで、基本的なプロジェクト設定は完了しました。次に、OAuth2 認証をプロジェクトに統合します。これにより、アプリケーションは Google サービスと安全にやり取りできるようになります。そのためには、まず、必要なパッケージを ファイルにインポートします。 index.js const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv'); 次に、Google カレンダー API に必要なアクセスの範囲を定義します。 const scopes = ['https://www.googleapis.com/auth/calendar']; 次に、 ファイルに保存した資格情報を使用して OAuth 2 クライアントを構成します。 .env // OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL ); OAuth 2 構成の後、ユーザーを認証するためのルートを作成します。 app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } ); ユーザーがこのルートに進むと、Google の認証ページにリダイレクトされ、アプリケーションに対する特定の権限が求められます。 認証が成功すると、Google はユーザーをリダイレクト URL ( ) にリダイレクトします。 /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.'); } ); ここでは、クエリから更新トークンを取得し、 に資格情報として保存しています。これらの資格情報は、Google Calendar API へのリクエストを行う際に役立ちます。 oauth2Client 以下は の完全なコードです。 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.'); } ); Google カレンダーでイベントをスケジュールする ここからが最も重要な部分です。このセクションでは、Google カレンダーでイベントをスケジュールします。 まず、Google カレンダー API クライアントを初期化します。 const calendar = google.calendar({ version: 'v3', auth: oauth2Client }); 次に、イベント オブジェクトを作成し、概要、場所、開始時刻、終了時刻など、イベントの詳細をすべて追加します。 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' }, }; その後、イベントを作成するルート ( ) を作成します。 /create-event ここでは、 メソッドを使用して、ユーザーのカレンダーにイベントを挿入しています。 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); } } ); これにより、Google カレンダーでイベントを動的にスケジュールできるようになります。 Google Meet リンクの追加: これまで、Google カレンダーで簡単なイベントを作成する方法について説明してきました。このセクションでは、そのイベントに Google Meet リンクを追加する方法について説明します。 そのために、前のセクションで作成したイベント オブジェクトを更新します。Google Meet リンクの作成リクエストを指定するために、 プロパティを追加します。 conferenceData conferenceData: { createRequest: { requestId: uuid(), } }, また、ゲストをイベントに招待するための プロパティも追加します。以下に簡単な例を示します。 attendees attendees: [ {email: 'arindammajumder2020@gmail.com'}, ] これで、Event オブジェクトは次のようになります。 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'}, ] }; 次に、イベント挿入手順で、 パラメータを追加します。 conferenceDataVersion const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event }); これにより、Google Meet リンクを含むイベントが作成されます。次のように、応答としてリンクを共有することもできます。 res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink }); 参加者へのリマインダーの送信: これでプロジェクトはほぼ完了です。あとは最後の仕上げを残すのみです。今のところ、私たちのプロジェクトは招待されたゲストのカレンダーにイベントを直接追加します。 ただし、これらのイベントについて通知するには、メールを 1 つ送信する必要があります。そのためには、イベント作成部分にパラメータ 1 つ追加する必要があります。これにより、アプリケーションは招待されたゲストに自動的にメールを送信します。 sendUpdates: 'all', const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event }); この追加により、プロジェクトではイベントの作成と電子メール通知の両方をシームレスに処理できるようになりました。 アプリケーションのテスト: プロジェクトのコーディング部分は完了しました。それでは、動作するかどうか確認してみましょう。 そのためにプロジェクトを始めます! npm run start これで、ポート 8000 でサーバーを起動できました。次に、ユーザーを認証するために ルートに移動します。次のようにリダイレクトされます。 http://localhost:8000/auth/ アプリケーションに対して何らかの許可を求められます。 クエリ パラメータを使用して ルートにリダイレクトします。 code /auth/redirect ユーザーの認証に成功したら、 ルートに移動してイベントをスケジュールします。 http://localhost:8000/create-event 素晴らしい!これは、Google Meet リンクを使用してイベントが作成されたことを意味します。 イベント作成プロセスが正しく機能していることを確認するには、Googleカレンダーを確認しましょう。 すごいですね!イベントが作成されました。つまり、イベント作成ルートは完璧に機能しています!また、招待メールも届きました。 素晴らしい!アプリケーションは完璧に動作しています! これで、Google カレンダーを Node.js アプリに統合できました。次の記事では、Google カレンダーのさらなる使用例について説明します。 それまで、お楽しみに! 結論 このブログ投稿が役に立った場合は、役に立つと思われる他の人と共有することを検討してください。また、Javascript、React、その他の Web 開発トピックに関するその他のコンテンツについては、私をフォローしてください。 有料コラボレーションについては、 までメールでお問い合わせください。 arindammajumder2020@gmail.com 、 、 、 で私とつながりましょう。 Twitter LinkedIn YouTube GitHub 読んでくれてありがとう:)