iT邦幫忙

0

Day 8|認識 Google Calendar API 與行程資料流程

api
  • 分享至 

  • xImage
  •  

前幾天我已經完成 Discord Bot 的基本指令功能,現在 /add 可以接收使用者輸入的標題、日期和時間,也把指令處理邏輯從 index.js 拆到不同的 command 檔案中。Discord這部分的基本輸入流程已經慢慢建立起來。

但目前就算 Bot 已經知道我要建立什麼行程,這些資料目前還只存在 Node.js 的程式裡,Google Calendar 並不知道這筆行程。

因此今天的目標是先理解 Google Calendar API 在整個專案裡負責什麼,以及 Discord 收到的資料之後會經過哪些步驟,最後才會真正出現在 Google Calendar 中。

一、為什麼需要 Google Calendar API

目前我的資料流程大概是:

使用者
↓
Discord Slash Command
↓
discord.js
↓
Node.js
↓
add.js
↓
取得 title、date、time

例如使用者可能輸入:
/add
title:資料結構上課
date:20261005
time:1830

目前我的程式可以成功取得:
title
date
time

但是目前 Google Calendar 還不會自動出現行程。因為 Discord 和 Google Calendar 是兩個不同的服務,Discord Bot 沒有辦法直接修改 Google Calendar。所以因此需要Google Calendar API的參與讓程式可以和 Google Calendar 溝通的介面。

Google Calendar API 可以讓程式對 Google Calendar 進行操作,例如讀取行程、建立行程、修改行程或刪除行程。

因此未來我的專案流程會變成:
Discord 使用者
↓
/add 指令
↓
Node.js
↓
取得 title、date、time
↓
整理成 Google Calendar 需要的資料格式
↓
Google Calendar API
↓
Google Calendar

這樣 Discord Bot 才真正有辦法把使用者輸入的資料送進 Google Calendar。

二、Google Calendar 裡的行程其實是一個 Event

接著我發現 Google Calendar 裡看到的一筆行程,在 API 中不是單純的三個文字資料,而是一個 Event。

例如平常看到的:
資料結構上課
2026/10/05
18:30

在程式中會被整理成類似下面的資料:

const event = {
    summary: '資料結構上課',

    start: {
        dateTime: '2026-10-05T18:30:00+08:00',
        timeZone: 'Asia/Taipei'
    },

    end: {
        dateTime: '2026-10-05T19:30:00+08:00',
        timeZone: 'Asia/Taipei'
    }
};

目前 Discord 收到的是:
title = "資料結構上課"
date = "20261005"
time = "1830"

但 Google Calendar 需要的資料格式並不完全相同。

例如:
Discord 的 title
↓
Google Calendar 的 summary

而日期和時間之後也必須整理成 Calendar API 可以接受的 dateTime 格式。所以未來程式中一定還需要一個「資料轉換」的步驟。

完整流程就會變成:
Discord 資料
title
date
time
↓ 整理與轉換
Google Calendar Event
summary
start
end

三、API 和 OAuth 負責的事情不同

在研究 Google Calendar API 時,我也注意到另一個問題。如果只要知道 Calendar API 的使用方法,任何程式就可以直接修改別人的 Google Calendar,那會有很大的安全問題。因此除了 API 之外,也需要處理 Google 帳號的授權,因此之後會使用 OAuth 2.0。

Google Calendar API
= 程式要怎麼操作 Calendar

OAuth 2.0
= Google 要確認這個程式有沒有取得使用者授權

之後完整的流程應該會是:
Discord
↓
Node.js
↓
取得使用者輸入
↓
OAuth 2.0 授權
↓
整理 Event 資料
↓
Google Calendar API
↓
Google Calendar

目前 Discord 的輸入端已經建立完成,接下來幾天就是開始準備把 Discord 取得的資料轉換成 Google Calendar 可以使用的格式,讓兩個不同的服務連接起來。


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言