GCP (Google Could Platform)JavaScriptNode.js

Node.jsで、特定のGoogleカレンダーに登録されたイベント情報を取得する

LINE botなどで、Googleカレンダーに登録した予定一覧を取得するコードの実装に挑戦しましたので、その覚書です。 Google APIの設定(リンク紹介のみ) Googleカレンダーの情報をAPIから取得するには […]

広告ここから
広告ここまで

LINE botなどで、Googleカレンダーに登録した予定一覧を取得するコードの実装に挑戦しましたので、その覚書です。

Google APIの設定(リンク紹介のみ)

Googleカレンダーの情報をAPIから取得するには、Google Cloudアカウントが必要です。

https://cloud.google.com/?hl=ja

APIにアクセスするための情報は、「サービスアカウント」の「キー」にてJSONファイルを出力させています。

キーの作成方法などは、ライブラリのREADMEファイルなどを参考に作業しています。

なお、まだ手順を言語化できていませんので、ここでは具体的な手順については割愛します。

npmのライブラリを追加する

googleapisライブラリをインストールします。

googleapiは別物ですので、タイポに注意しましょう。

% npm i googleapis

認証の設定を行う

APIを呼び出すための設定は、次のように実装しました。

import {google} from 'googleapis'

const SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
const GOOGLE_PROJECT_ID = 'gcaldemo'

const auth = new google.auth.GoogleAuth({
  keyFile: '/path/to/your-secret-key.json',
  scopes: SCOPES,
  projectId: GOOGLE_PROJECT_ID
})

カレンダーAPIから予定を取得する

あとはライブラリからAPIを呼び出すだけです。

    const calendar = google.calendar({
      version: "v3",
      auth: auth
    });
    const res = await calendar.events.list({
      calendarId: GOOGLE_CALENDAR_ID,
      timeMin: new Date().toISOString(),
      maxResults: 10,
      orderBy: 'startTime',
    })

レスポンスはaxiosと似たオブジェクト構造に見えました。

アプリ側で使わないデータの除去などを行う処理を追加します。


    const {
      summary,
      description,
      timeZone,
      updated,
      items
    } = res.data;

    const events = items.map(({
      id,
      updated,
      summary,
      organizer: {
        displayName
      },
      start: {
        date: startDate,
      },
    }) => ({
      id,
      lastUpdated: updated,
      displayName,
      startDate,
      summary
    }))

Next Step

とりあえずユーザーに見せたいデータのJSONを作る部分まではできました。

LINE botやウェブサイトなどで使えればと思いますので、Nestのモジュールとして抽象化しておこうかなと思います。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts