ホームページ >ウェブフロントエンド >jsチュートリアル >Google Meet の作成を自動化する
このブログ投稿では、Google Calendar API を使用して Google カレンダー イベントを作成し、Google Meet リンクを自動的に作成するプロセスを説明します。サービス アカウントを使用して認証を行うことで、Google Workspace ドメイン内のユーザーに代わってイベントを作成できるようになります。
始める前に、以下のものがあることを確認してください:
Google API と対話し、JWT 署名を処理するには、いくつかの Node.js パッケージが必要です。
npm install google-auth-library jsonwebtoken node-fetch
次に、サービス アカウントを認証するための JWT (JSON Web トークン) を生成する Node.js スクリプトを作成します。
const fs = require('fs'); const jwt = require('jsonwebtoken'); // Path to your service account JSON file const SERVICE_ACCOUNT_KEY_FILE = '/path/to/your/service-account-key.json'; // Scopes required for the API const SCOPES = ['https://www.googleapis.com/auth/calendar']; // Full calendar access const AUDIENCE = 'https://oauth2.googleapis.com/token'; async function generateJWT() { try { // Read and parse the service account credentials const serviceAccount = JSON.parse(fs.readFileSync(SERVICE_ACCOUNT_KEY_FILE, 'utf8')); // JWT payload const jwtPayload = { iss: serviceAccount.client_email, // Issuer: service account email sub: 'user@example.com', // Subject: email of the user whose calendar to access aud: AUDIENCE, // Audience: Google token URL scope: SCOPES.join(' '), // Scopes: space-separated list of scopes iat: Math.floor(Date.now() / 1000), // Issued at: current time in seconds exp: Math.floor(Date.now() / 1000) + 3600 // Expiration: 1 hour from now }; // Sign the JWT using the service account's private key const signedJwt = jwt.sign(jwtPayload, serviceAccount.private_key, { algorithm: 'RS256' }); console.log('Generated JWT:', signedJwt); } catch (error) { console.error('Error generating JWT:', error); } } generateJWT();
次に、JWT を使用して、Google の OAuth 2.0 トークン エンドポイントから OAuth 2.0 トークンを取得します。
npm install google-auth-library jsonwebtoken node-fetch
アクセス トークンを使用して、Google Meet リンクを含む Google カレンダー イベントを作成できるようになりました。
const fs = require('fs'); const jwt = require('jsonwebtoken'); // Path to your service account JSON file const SERVICE_ACCOUNT_KEY_FILE = '/path/to/your/service-account-key.json'; // Scopes required for the API const SCOPES = ['https://www.googleapis.com/auth/calendar']; // Full calendar access const AUDIENCE = 'https://oauth2.googleapis.com/token'; async function generateJWT() { try { // Read and parse the service account credentials const serviceAccount = JSON.parse(fs.readFileSync(SERVICE_ACCOUNT_KEY_FILE, 'utf8')); // JWT payload const jwtPayload = { iss: serviceAccount.client_email, // Issuer: service account email sub: 'user@example.com', // Subject: email of the user whose calendar to access aud: AUDIENCE, // Audience: Google token URL scope: SCOPES.join(' '), // Scopes: space-separated list of scopes iat: Math.floor(Date.now() / 1000), // Issued at: current time in seconds exp: Math.floor(Date.now() / 1000) + 3600 // Expiration: 1 hour from now }; // Sign the JWT using the service account's private key const signedJwt = jwt.sign(jwtPayload, serviceAccount.private_key, { algorithm: 'RS256' }); console.log('Generated JWT:', signedJwt); } catch (error) { console.error('Error generating JWT:', error); } } generateJWT();
すべての部分を組み合わせてスクリプトを実行すると、Google Meet イベントが自動的に作成されます。
const fetch = require('node-fetch'); async function getAccessToken(signedJwt) { const response = await fetch('https://oauth2.googleapis.com/token', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: new URLSearchParams({ 'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer', 'assertion': signedJwt }) }); const data = await response.json(); return data.access_token; }
上記の手順により、サービス アカウントとドメイン全体の権限委任を使用して、Google Meet リンクを含む Google カレンダー イベントを自動的に作成できます。この方法は、Google Workspace ドメインでの会議を自動化するのに最適です。
ドメイン全体の委任を有効にし、ユーザーになりすますようにサービス アカウントを構成すると、Google カレンダーのイベントにプログラムでアクセスして管理できるため、エンタープライズ環境では非常に役立ちます。
コーディングを楽しんでください! ✨
以上がGoogle Meet の作成を自動化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。