最近真的超多人來問我:「欸,我的 Google Sheet 裡面,那個『指令碼編輯器』跑去哪了?以前不是在『工具』裡嗎?」問的人多到我覺得乾脆寫一篇一次講清楚好了。如果你也一樣找不到,別慌,你不是一個人,這也不是 bug,只是 Google 又双叒叕改介面了。
重點一句話
先說結論:以前在「工具」選單裡的「指令碼編輯器」,現在搬家到「擴充功能」選單裡面,並且改名叫做「Apps Script」了。 所以,新的路徑是:點擊選單列的「擴充功能」→「Apps Script」。
為什麼大家都找不到?不只是換位置而已
好,我知道你可能會想:「就只是換個位置,有什麼好大驚小怪的?」嗯...事情沒有這麼單純。這次的改動,背後其實代表了 Google 對 Apps Script 的一個核心思維轉變,這也是造成很多人困惑的主因。
以前,我們點「工具」→「指令碼編輯器」,感覺就像是在為「這份試算表」開啟一個附屬的編輯工具。它跟試算表是綁在一起的,我們稱之為「容器綁定指令碼」(Container-bound Script)。 感覺很直覺,對吧?
但是,現在當你點擊「擴充功能」→「Apps Script」時,你會發現它是在一個全新的瀏覽器分頁開啟,網址是 `script.google.com` 開頭。 你會進入一個看起來更專業、更「獨立」的開發環境。這就是關鍵的轉變:Google 不再把 Apps Script 看作是單一文件的附屬品,而是把它提升為一個獨立的「開發平台」。 在這個平台上,你可以管理所有與你 Google 帳號關聯的指令碼專案,不管它們是綁定在哪個文件,或甚至是完全獨立的專案。
這種轉變在官方的開發者部落格中有提到,他們在 2020 年底就發布了新的整合式開發環境 (IDE),並在 2022 年第四季將舊版 tamamen 淘汰。 他們的目標是簡化開發流程,提供更現代化的工具,像是更好的自動完成和偵錯功能。 但對於只是想寫個小腳本自動化工作的普通使用者來說,這個「升級」反而帶來了困惑。這點在一些台灣的論壇,像是 iT 邦幫忙或是更早期的文章中,都能看到使用者還停留在舊版「工具」選單的教學記憶裡。 這種官方公告跟使用者實際體驗的落差,就是混亂的來源。
3+1 種開啟指令碼編輯器的方法
瞭解了背後的原因後,我們來看看現在到底有幾種方法可以進入這個新的 Apps Script 世界。我把它整理成 3+1 種,因為其中一種思路跟前三種不太一樣。
-
最標準的路徑:從「擴充功能」選單
這就是官方現在預設的方式。打開你的 Google Sheet,點擊頂端選單的「擴充功能」,然後選擇「Apps Script」。 這會為你當前的試算表建立一個「綁定」的指令碼專案,並在新分頁中打開編輯器。 -
高手捷徑:直接訪問 Apps Script 首頁
如果你是個重度使用者,常常需要管理很多不同的指令碼專案,那直接把 `script.google.com/home` 這個網址存到書籤列吧。從這裡,你可以看到你帳號下所有的指令碼專案,不管是綁定的還是獨立的,一目了然,也可以直接在這裡建立新專案。 -
從 Google 雲端硬碟建立
這方法比較少人知道。你可以在 Google 雲端硬碟的資料夾中,點擊「+ 新增」→「更多」,然後你會找到「Google Apps Script」。 透過這種方式建立的,預設會是一個「獨立指令碼」(Standalone Script),它不依附於任何特定的試算表或文件。 -
那個 "+1":建立獨立指令碼 (Standalone Script)
這就是我想特別拉出來講的「+1」。前面三種方法都是在「找入口」,但這個是一種「思維方式」。什麼是獨立指令碼?簡單說,它就是一個不為任何特定文件服務的通用腳本。 比如說,你可以寫一個獨立指令碼,每天定時檢查你 Gmail 裡所有未讀信件、或是整理 Google Drive 裡的檔案,這些任務跟任何一份特定的試算表都無關。這種腳本的威力更大,因為它的應用範圍更廣。你可以透過上面提到的方法 2 或 3 來建立它。
新舊介面對照:到底改了什麼?
除了入口改變,編輯器本身也大翻新。新的編輯器是基於一個叫做 Monaco 的元件做的,跟 VS Code 用的是同一個核心,寫起來爽度真的提升很多。 對於那些從舊版「工具 -> 指令碼編輯器」時代過來的人來說,可能會有點不習慣。我整理了一個簡單的比較表,讓大家快速上手。
| 功能 | 舊版介面 (Legacy Editor) | 新版介面 (Monaco Editor) | 我的看法 / 說明 |
|---|---|---|---|
| 專案與檔案 | 所有 .gs 檔案都顯示在一個簡單的列表裡。 | 左側有更清晰的檔案樹狀結構,可以新增 `.html` 和 `.json` (專案資訊清單檔) 檔案。 | 新版清楚多了,專案一大就很難管舊版的檔案列表。 |
| 自動完成 (Autocomplete) | 有,但很基本,有時候還會卡卡的。 | 非常強大且即時,會顯示函式說明和參數提示。 | 老實說,光是為了這個功能就值得換新版。寫程式碼的效率差太多了。 |
| 偵錯 (Debugging) | 有中斷點和記錄器 (Logger),但介面很陽春。 | 左側有專門的「執行」和「偵錯」分頁,可以看即時的執行記錄 (streaming logs),還有呼叫堆疊 (call stack),抓蟲方便很多。 | 新版的偵錯體驗簡直是從石器時代進化到太空時代。特別是即時記錄,不用再一直 `Logger.log` 然後重跑了。 |
| 觸發器 (Triggers) | 在「編輯」選單下的一個選項。 | 左側有獨立的鬧鐘圖示「觸發條件」頁面,設定和管理所有時間驅動或事件驅動的觸發器一目了然。 | 新版把觸發器獨立出來超級正確!以前藏在選單裡真的不好找,現在管理起來直覺多了。 |
| 部署 (Deployment) | 透過「發布」選單來部署成網頁應用或 API。 | 右上角有藍色的「部署」按鈕,可以管理多個版本的部署(例如測試版、正式版)。 | 新版的部署概念更清晰,可以讓你同時保留一個穩定的正式版,然後開發測試一個新版本,對開發流程來說更安全。 |
新版介面有什麼限制或要注意的?
當然,沒有東西是完美的。新介面雖然強大,但也有幾個點需要注意:
- .gs 檔案的隱藏特性:在新的編輯器中,如果你建立了一個 `.gs` 檔案,它其實背後是一個獨立的檔案。但如果你是從舊版遷移過來的專案,它可能還是單一檔案的模式。這個小差異有時候會讓新手搞混。
- 權限管理變更:新的 OAuth 流程更加細緻。 以前可能一次就授權所有權限,現在它會更清楚地列出腳本需要「讀取試算表」、「寄送郵件」等權限,需要你逐一同意。這對安全性是好事,但第一次執行時可能會被一長串的授權請求嚇到。
- 專案與 GCP 的關聯:每個 Apps Script 專案背後,其實都有一個隱藏的 Google Cloud Platform (GCP) 專案。 對於大多數使用者來說這沒什麼影響,但如果你需要用到一些進階的 Google API (例如 Google Maps API),你就得去 GCP 控制台啟用它,這對初學者來說又是一個學習門檻。
- 如果你是從 `.xlsx` 轉檔:有個在國外論壇 Reddit 上很多人遇到的問題,如果你是直接在 Google Drive 打開一個 Excel 的 `.xlsx` 檔案,然後用「另存為 Google 試算表」,有時候這個新產生的試算表會沒有「擴充功能」選單! 解法通常是:建立一個全新的、空白的 Google 試算表,然後再把舊 Excel 的內容複製貼上過去。這似乎是檔案繼承某些屬性時的怪問題。
小測驗:你會用哪種方法?
看完這篇,來個小情境題考考你。假設你的主管要你寫一個腳本,這個腳本需要「每週一早上九點,自動檢查三個不同試算表的庫存,然後彙總成一份報告,用 Email 寄給他」。
在這種情境下,你會選擇建立「綁定指令碼」還是「獨立指令碼」?為什麼?歡迎在下面留言分享你的看法!
