種類與觸發方式總覽
「Google Apps Script」其實是同一套 JavaScript 環境的多種用法。這頁用三張表回答:GAS 有哪些種類、每一種通常怎麼被啟動(trigger)、我的需求該選哪一種。細節在各頁,這頁只負責幫你找方向。
想找 SpreadsheetApp、DriveApp 這類服務?
這頁談的是專案的種類與啟動方式。至於 SpreadsheetApp、GmailApp、DriveApp、CalendarApp 等內建服務,各自做什麼、常搭配哪些觸發、常用度幾顆星,見 內建服務總表。
一、GAS 有哪些種類
| 種類 | 怎麼建立 | 通常怎麼被啟動 | 典型用途 | 詳見 |
|---|---|---|---|---|
| 繫結腳本(container-bound) | 試算表、文件、簡報、表單的 擴充功能 → Apps Script | 選單、按鈕、onOpen/onEdit、可安裝觸發 |
單一檔案專用的自動化、自訂選單 | 繫結與獨立專案 |
| 獨立腳本(standalone) | script.google.com 新增專案 | 手動、時間觸發、其他檔案的可安裝觸發 | 定時彙整、跨多個檔案、當函式庫或 API 使用 | 繫結與獨立專案 |
| 自訂函式 | 在儲存格輸入 =函式名稱() |
試算表計算儲存格時 | 把邏輯包成試算表公式 | 自訂函式 |
| 網頁應用程式(Web App) | 部署 → 網頁應用程式 | 有人用瀏覽器開網址(doGet)、外部系統 POST(doPost) |
小工具、Webhook 接收端、LINE Bot 後台 | 網頁應用、LINE Bot |
| 編輯器外掛(Editor add-on) | 繫結腳本+外掛清單 | 使用者從選單開啟、onInstall/onOpen |
側欄工具,給多人安裝使用 | 外掛 |
| Workspace 外掛與 Chat 應用 | 獨立腳本+appsscript.json 設定 |
使用者打開 Gmail/日曆/Drive 側欄、在 Chat 傳訊息 | 在 Google 產品旁邊放自己的卡片 UI 或聊天機器人 | 外掛 |
| 程式庫(Library) | 獨立腳本發佈版本 | 不會自己啟動,被別的專案引用 | 多個專案共用同一份程式碼 | — |
| Apps Script API | 在 Cloud 專案開啟 API | 外部程式呼叫 scripts.run |
從別的系統遠端執行 GAS 函式(少用) | 官方文件 |
一個專案可以同時是好幾種:例如繫結在試算表上、又部署成 Web App、又掛了時間觸發。分類是看「它怎麼被啟動」,不是看「它放在哪」。
二、觸發方式一覽
GAS 函式不會自己跑,一定是被下面其中一種方式啟動:
| 觸發方式 | 誰或什麼事件啟動 | 怎麼設定 | 以誰的身分執行 | 能用需授權的服務嗎? | 常見用途 |
|---|---|---|---|---|---|
| 手動執行 | 你在編輯器按 執行,或按選單/繪圖按鈕 | 選單見 自訂選單 | 按的人 | 可以 | 測試、一次性整理資料 |
| 簡易觸發 | 開啟檔案(onOpen)、改儲存格(onEdit)、改選取範圍(onSelectionChange) |
函式取這些名字即可,免設定 | 操作檔案的使用者(不一定能取得其身分) | 不行(不能寄信、不能開別的檔案) | 加選單、時間戳、輸入檢查 |
| 可安裝觸發:時間驅動 | 時間到了 | 編輯器 觸發條件 或 ScriptApp |
建立觸發的人 | 可以 | 每天寄報表、定時更新資料 |
| 可安裝觸發:試算表事件 | 開啟、編輯、結構變更 | 同上 | 建立觸發的人 | 可以 | 編輯時要寄信、要開別的檔案 |
| 可安裝觸發:表單提交 | 有人送出 Google 表單 | 同上 | 建立觸發的人 | 可以 | 自動回信、寫入日曆 |
| 可安裝觸發:日曆事件 | 日曆事件被建立、修改或刪除 | 同上 | 建立觸發的人 | 可以 | 同步行程 |
| HTTP 請求 | 瀏覽器或外部系統呼叫網址 | 部署成 Web App | 依部署時的「執行身分」 | 可以 | Webhook、LINE Bot、API |
| 外掛/Chat 事件 | 使用者在側欄或 Chat 操作 | appsscript.json |
依外掛設定 | 依授權範圍 | 外掛 UI、聊天機器人 |
三個容易混淆的地方:
- 簡易 vs 可安裝:名字一樣(例如
onEdit)也有兩種。簡易觸發免設定但權限受限;可安裝觸發要自己建立,但可以寄信。要用需授權的服務就必須是可安裝。 - 腳本不會觸發腳本:官方文件寫明,腳本執行或 API 請求所做的修改不會觸發
onEdit、變更等事件。用程式改儲存格,onEdit不會跑。 - 可安裝觸發永遠用建立者的身分跑:不是用「動手改表的同事」。所以寄信會顯示建立者的地址,也吃建立者的配額。
更完整的設定與限制見 觸發條件。
三、我的需求該選哪一種
| 我想要… | 建議做法 |
|---|---|
| 每天早上 8 點自動寄報表 | 獨立或繫結腳本+時間驅動可安裝觸發 |
| 某欄一改,旁邊自動填時間 | 繫結腳本+簡易觸發 onEdit(記得過濾工作表與欄) |
| 表單送出後自動回信 | 表單提交可安裝觸發 |
| 讓同事按一下就跑流程 | 繫結腳本+自訂選單 |
| 儲存格裡直接算出結果 | 自訂函式 |
| 別的系統(LINE、金流)通知我 | Web App(doPost),見 LINE Bot |
| 很多人安裝、放進 Gmail 或 Chat | Workspace 外掛或 Chat 應用 |
| 很多專案共用同一段程式 | 程式庫 |
接下來看什麼
寫很多 GAS 會不會變慢、單次能跑多久,見 效能與執行限制。