內建服務
SpreadsheetApp、DriveApp、GmailApp、CalendarApp……這些直接可用、不必 import 的物件,就是 Apps Script 的內建服務(built-in services)。GAS 的能力幾乎都來自它們:每個服務負責操作一種 Google 產品或一種功能。這個分類先用一張總表讓你看清楚有哪些服務、通常在什麼時機被呼叫、常用程度如何,再逐一說明每個服務並各給一個實際的例子。
怎麼看這張表
服務本身不會自己執行,是某個觸發(trigger)啟動了你的函式,函式再呼叫服務。所以「常搭配的觸發」這欄回答的是:這個服務通常在什麼時機被用到。觸發本身的規則見 觸發條件。
簡易觸發可用? 指在 onOpen、onEdit 這類簡易觸發裡能不能呼叫。官方規則是:簡易觸發不能使用需要授權的服務,而且只能改動自己繫結的那個檔案。這也是為什麼 onEdit 裡不能寄信,卻可以改儲存格。
常用度 是本站針對「辦公室自動化」情境的主觀評比,不是官方統計:
| 星等 | 意思 |
|---|---|
| ★★★★★ | 非常常用,幾乎每個專案都會碰到 |
| ★★★★☆ | 很常用 |
| ★★★☆☆ | 一般,遇到對應需求才用 |
| ★★☆☆☆ | 較少用 |
| ★☆☆☆☆ | 很少用,或已被取代 |
總表
| 服務 | 用途 | 常搭配的觸發 | 簡易觸發可用? | 常用度 |
|---|---|---|---|---|
| SpreadsheetApp | 讀寫試算表 | onOpen、onEdit、變更、時間驅動、選單、自訂函式(唯讀) |
可(僅限繫結的檔案) | ★★★★★ |
| Logger 與 console | 印出除錯訊息 | 任何觸發 | 可 | ★★★★★ |
| UrlFetchApp | 呼叫外部 API、抓網頁 | 時間驅動、選單、自訂函式 | 不可 | ★★★★☆ |
| GmailApp | 搜尋、讀取、整理信件 | 時間驅動(輪詢)、選單 | 不可 | ★★★★☆ |
| MailApp | 寄信(只能寄,不能讀) | 時間驅動、表單提交、選單 | 不可 | ★★★★☆ |
| DriveApp | 管理雲端硬碟的檔案與資料夾 | 時間驅動(輪詢)、表單提交、選單 | 不可 | ★★★★☆ |
| PropertiesService | 存金鑰、設定、處理進度 | 任何觸發 | 可 | ★★★★☆ |
| Utilities | 日期格式化、編碼、雜湊、CSV | 任何觸發 | 可 | ★★★★☆ |
| DocumentApp | 建立、編輯 Google 文件 | onOpen、選單、時間驅動(文件沒有 onEdit) |
可(僅限繫結的檔案) | ★★★☆☆ |
| CalendarApp | 讀寫日曆與事件 | 日曆事件更新、時間驅動、表單提交 | 不可 | ★★★☆☆ |
| FormApp | 建立表單、讀取回應 | 表單提交、onOpen、時間驅動 |
可(僅限繫結的檔案) | ★★★☆☆ |
| HtmlService | 側欄、對話方塊、網頁畫面 | 選單、doGet |
可 | ★★★☆☆ |
| ContentService | 從 Web App 回傳 JSON 或文字 | doGet、doPost |
不適用(用在 Web App) | ★★★☆☆ |
| CacheService | 暫存資料加速、去重 | 任何觸發 | 可 | ★★★☆☆ |
| Session | 取得使用者信箱、時區 | 任何觸發 | 可,但使用者身分不一定可靠 | ★★★☆☆ |
| ScriptApp | 建立與管理觸發 | 手動執行一次性設定 | 不可 | ★★★☆☆ |
| 進階 Google 服務 | 完整的 Sheets、Drive、Gmail 等 API | 依用途而定 | 不可 | ★★★☆☆ |
| SlidesApp | 建立、編輯簡報 | onOpen、選單、時間驅動 |
可(僅限繫結的檔案) | ★★☆☆☆ |
| LanguageApp | 翻譯文字 | 自訂函式、任何觸發 | 可(官方明載) | ★★☆☆☆ |
| Maps | 地址轉座標、路線、距離 | 選單、時間驅動、自訂函式 | 官方未明載 | ★★☆☆☆ |
| Charts | 產生圖表圖片 | 時間驅動搭配寄信、doGet |
官方未明載 | ★★☆☆☆ |
| LockService | 避免多個執行同時改同一份資料 | 多人同時觸發的情境 | 可 | ★★☆☆☆ |
| JDBC | 連 MySQL、SQL Server 等資料庫 | 時間驅動、選單、自訂函式 | 官方未明載 | ★☆☆☆☆ |
| XmlService | 解析與產生 XML | 時間驅動、doPost |
可 | ★☆☆☆☆ |
| GroupsApp | 查詢 Google 群組成員(限 Workspace 網域) | 時間驅動、選單 | 不可 | ★☆☆☆☆ |
| ContactsApp | 通訊錄 | — | — | ★☆☆☆☆(已棄用,官方建議改用 People API 進階服務) |
關於「簡易觸發可用?」這欄
官方只明確舉例:Gmail 不可、Language 可。其他服務是依「是否需要授權」推論,有疑問時,直接在編輯器建一個 onEdit 試一次最準。
兩個常被問到的空缺:Apps Script 沒有「收到新信」的觸發,也沒有「Drive 檔案異動」的觸發。想做到這類功能,都是用時間驅動觸發定時去查,再用 PropertiesService 記住上次查到哪裡。
自訂函式能用哪些服務
在儲存格輸入 =函式() 的自訂函式,只能呼叫不涉及個人資料的服務。官方列出的可用清單:Cache、HTML、JDBC、Language、Lock、Maps、Properties、Spreadsheet(唯讀,只能 get*、不能 set*)、URL Fetch、Utilities、XML。Gmail、Drive、Calendar、Document、Slides 等會直接報錯「You do not have permission to call X service」。單次還有 30 秒上限。詳見 自訂函式。
常見組合
實際專案很少只用一個服務。下面是幾種典型的搭配:
| 想做的事 | 觸發 | 用到的服務 |
|---|---|---|
| 編輯某欄時自動填完成時間 | onEdit |
SpreadsheetApp |
| 表單送出後自動回信並存檔 | 表單提交 | FormApp、SpreadsheetApp、MailApp、DocumentApp、DriveApp |
| 每週一寄出本週行程 | 時間驅動 | CalendarApp、MailApp |
| 定時把報價信整理進試算表 | 時間驅動 | GmailApp、SpreadsheetApp、PropertiesService |
| 每天抓 API 資料存進試算表 | 時間驅動 | UrlFetchApp、SpreadsheetApp、CacheService |
| LINE Bot 後台 | doPost |
ContentService、UrlFetchApp、SpreadsheetApp、CacheService,見 LINE Bot |
本分類的頁面
| 頁面 | 涵蓋的服務 |
|---|---|
| 試算表、文件、簡報與表單 | SpreadsheetApp、DocumentApp、SlidesApp、FormApp |
| Gmail、Drive 與日曆 | GmailApp、MailApp、DriveApp、CalendarApp |
| 網路、介面與外部資料 | UrlFetchApp、HtmlService、ContentService、LanguageApp、Maps、Charts、JDBC |
| 工具服務 | PropertiesService、CacheService、LockService、Utilities、Session、ScriptApp、XmlService、GroupsApp、Logger、進階服務 |
先學哪些
照星等來:先把 ★★★★★ 與 ★★★★☆ 的服務做熟(SpreadsheetApp、UrlFetchApp、Gmail/Mail、Drive、PropertiesService、Utilities),大多數辦公室自動化就夠了。★★☆☆☆ 以下的,遇到需求再查。官方完整清單在 Apps Script 參考文件。
想看影片示範,見 影音教學。