用 Notion API 串接 Gmail、表單、行事曆:打造專屬你的自動化生活助手

作者: Calpa Liu
字數:1890
出版:2025 年 5 月 13 日
Notion 不只是筆記本,透過 API 輕鬆串接 Gmail、Google Forms、Calendar,快速實現個人化自動化流程。這篇用活潑溫暖的方式帶你入門,從 TypeScript 範例到 webhook 實戰,讓你的 Notion 變得貼心又聰明。

每天面對滿滿的信件、表單和行程,你是不是也想過:如果有一個數位小幫手,能自動整理資訊、還能美美呈現該有多好?以前我也試過用傳統資料庫,雖然強大,卻總讓人覺得冰冷又複雜。直到遇見 Notion API,我才發現,原來自動化也能很「有溫度」!

用 Notion,表單回覆會自己變成美美的頁面,重要信件會自動進待辦清單,行事曆也能同步到 Notion 行事曆視圖。這不僅是筆記本,更像是隨時陪伴你的數位小幫手,把資訊都整理得井井有條,還能用你喜歡的方式呈現。

Notion API 是什麼?為什麼這麼好用?

簡單說,Notion API 就像是一座橋,讓你和 Notion 之間可以互通有無。不管你想自動建立頁面、同步資料,還是查詢內容,只要透過 API,就能用程式讓 Notion 幫你打理生活瑣事。

開始之前,只需要到 Notion 的 My Integration 頁面建立一個屬於你的 Integration(就像邀請一位幫手進你的工作區),選好權限、拿到 Token,然後再把這個 Integration 加入你想操作的頁面或資料庫。這樣,Notion 就準備好聽你差遣啦!

每次和 Notion API 說話時(發送請求),記得要帶上身份證明(Token)、API 版本和資料格式。例如:

const headers = {
  Authorization: `Bearer ${process.env.NOTION_API_TOKEN}`,
  "Notion-Version": "2022-06-28",
  "Content-Type": "application/json",
};

如果忘記在請求中帶上 Token,Notion API 會回應你一個 401 Unauthorized 的錯誤,這代表你沒有通過身份驗證。記得每次呼叫 API 時都要正確加上授權標頭(Authorization header),否則 Notion 會拒絕你的請求。

Notion API TypeScript 實作全攻略

Notion 官方很貼心,直接幫忙準備好 TypeScript/JavaScript SDK,不用自己寫複雜的 HTTP 請求,只要安裝 SDK、設定 Token,就能輕鬆操作 Notion!我們馬上從環境準備到實戰範例,一步步帶你體驗 Notion API 的強大與友善。

安裝 SDK

首先安裝 SDK(在專案目錄下執行):

npm install @notionhq/client

然後在 TypeScript 專案中引入 Notion Client,並用你在 Notion Integration 拿到的 Token 初始化:

import { Client } from "@notionhq/client";

const notion = new Client({ auth: process.env.NOTION_API_TOKEN });

列出工作區所有用戶

如果你想查出目前工作區的所有用戶(方便分派任務或同步資訊),只需要:

async function listUsers() {
  try {
    const response = await notion.users.list();
    console.log("用戶列表:", response.results);
  } catch (error) {
    console.error("查詢用戶失敗:", error);
  }
}

listUsers();

查詢資料庫內容(例如:自動蒐集表單回覆)

想查 Notion 資料庫的內容,比如問卷回覆,步驟超直覺:

async function queryDatabase(databaseId: string) {
  try {
    const response = await notion.databases.query({
      database_id: databaseId,
      page_size: 100,
    });
    return response.results;
  } catch (error) {
    console.error("查詢資料庫失敗:", error);
    return [];
  }
}

你可以把這個函式串到 Google Forms webhook,讓每次有新回覆就自動匯入 Notion。

分頁取得全部資料,保證一筆不漏

Notion 資料庫內容如果超過 100 筆,API 會分批回傳,SDK 也幫你把分頁處理變得簡單。這樣就能拿齊全部資料:

async function getAllPages(databaseId: string) {
  let results: any[] = [];
  let cursor: string | undefined = undefined;
  do {
    const response = await notion.databases.query({
      database_id: databaseId,
      start_cursor: cursor,
      page_size: 100,
    });
    results = results.concat(response.results);
    cursor = response.has_more ? response.next_cursor : undefined;
  } while (cursor);
  return results;
}

這段會自動抓到「最後一頁」,不用自己處理繁瑣的游標邏輯,超級貼心。你甚至可以用這份資料直接生成報表、同步到其他系統,或自動發送郵件提醒。

延伸應用(自動建立頁面、更新內容)

除了查詢,Notion API 也能幫你自動建立新頁面、更新現有內容。例如:收到重要信件時自動建頁面:

async function createTodoFromMail(subject: string, content: string) {
  await notion.pages.create({
    parent: { database_id: process.env.NOTION_TODO_DB_ID! },
    properties: {
      Name: {
        title: [
          {
            text: { content: subject },
          },
        ],
      },
      狀態: {
        select: { name: "待處理" },
      },
    },
    children: [
      {
        object: "block",
        type: "paragraph",
        paragraph: {
          rich_text: [{ text: { content } }],
        },
      },
    ],
  });
}

這樣一來,Gmail 來信就能自動變成 Notion 待辦事項,工作流程「秒」自動化!

這些 TypeScript 範例只是起點,Notion API 讓你用程式打造各種個人化自動化情境,省時又有趣。只要多練習、善用官方文件,你也能變成數位生活的自動化達人!

生活小例子,Notion API 怎麼幫上忙?

想像一下,如果 Gmail 有新郵件,Notion 就自動幫你新增一條待辦事項,重要信件再也不怕被遺漏。這樣一來,工作和生活的大小事都能井然有序地排隊等你處理。

想像一下:你發出一份活動報名表,當有人填完,Notion 就自動幫你新增一筆報名紀錄,連報名者的訊息也整齊排好,完全不用自己複製貼上!

所有表單回應統一管理,不怕資料散落四處,整理和後續分析都變得超容易。

日常的行程管理也能更聰明。無論是工作會議、課程還是朋友聚會,只要同步 Google Calendar,所有活動都會自動顯示在 Notion 行事曆裡,一眼就能掌握行程規劃。

甚至像 Trello、Zoom 等其他協作工具,也能透過 Notion API 匯整資訊。無論團隊還是個人,所有重要內容都集中在 Notion,效率自然 Level Up!

安全、穩定才安心!開發小提醒

  • Token 安全:記得不要把 API Token 寫死在程式碼裡,最好放在環境變數或安全的金鑰管理服務。
  • 錯誤處理:遇到 API 問題時,溫柔處理一下,根據錯誤訊息做適當回應。例如:
import { APIErrorCode } from "@notionhq/client";

async function safeQuery(databaseId: string) {
  try {
    const result = await notion.databases.query({
      database_id: databaseId,
      filter: {
        property: "標題",
        rich_text: { contains: "示例" },
      },
    });
    return result;
  } catch (error: any) {
    if (error.code === APIErrorCode.ObjectNotFound) {
      console.error("找不到資料庫,確認一下 ID 吧!");
    } else {
      console.error(error.message);
    }
    throw error;
  }
}
  • 請求限流:Notion API 有速率限制,建議用如 p-limitbottleneck 工具,避免短時間發送太多請求,讓 Notion 也有喘口氣的機會。

結語:讓 Notion 成為你生活的神隊友

Notion API 讓自動化變得簡單又人性化,不只是寫筆記,更能幫你打理每天的大小事。從郵件、表單到行事曆,所有資訊都能整齊有序,自動同步到你眼前。無論是工作協作還是生活規劃,你都能把時間花在真正重要的事情上,而不是反覆搬運資料。

不只是把資訊「收集」起來,更能自動化「整理」、「提醒」、「同步」到你需要的平台。舉例來說,收到重要信件自動新增待辦、Google Forms 回覆自動進資料庫、行事曆活動秒速同步,甚至能根據不同情境自訂通知或產生報表,讓 Notion 成為你的數位秘書、任務管家、智慧資訊中心。

這些實作其實並不難,從最基本的 API 學起,逐步進階串接 webhook、整合其他雲端服務,你會發現數位生活原來可以這麼有溫度。不管是下班後自動彙整一天重點,還是假日提醒未完成任務,Notion API 都能幫你打理生活瑣事。不妨現在就試試,寫一段簡單的程式,讓你的 Gmail 來信自動變成待辦。只要第一次成功,你就會愛上這種「自己動起來」的魔法。這不是科技冷冰冰的自動化,而是為你量身打造的貼心助理。

關於 Calpa

Calpa 擅長使用 TypeScriptReact.jsVue.js 建立 Responsive Website。

他積極參與開源社區,曾在 2019 年的香港開源大會上擔任講者,提供工作經驗和見解。此外,他也在 GitHub 上公開分享個人博客程式碼,已獲得超過 300 顆星星和 60 個分支的支持。

他熱愛學習新技術,並樂意分享經驗。他相信,唯有不斷學習才能跟上快速演變的技術環境。

熱門文章

最新文章

Zeabur 架構自動無痛感
專案交付更輕鬆
🎁 首次升級送 $5 點數