JavaScript 與 V8
Apps Script 的語法是 JavaScript(現在預設 V8 執行階段),但執行環境不是瀏覽器。沒有 window、document、fetch;改用 Google 提供的服務物件。會一點 JS 的人,卡關通常在「服務怎麼叫」,不是語法。
你需要的那一點 JS
夠用日常自動化的核心很小:
- 變數:
const/let;少用var。 - 函式:頂層
function 名稱() { }才能從編輯器下拉選、才能當觸發目標。 - 陣列:試算表一列是一個陣列,整張表是「陣列的陣列」。
- 物件:
{ name: "Ada", age: 36 },對應一列裡的具名欄位時很好用。 - 迴圈:
for、for...of;處理列資料時也很常用map/filter。
function sumColumnA() {
const values = SpreadsheetApp.getActiveSheet()
.getRange("A2:A")
.getValues();
let total = 0;
for (const [cell] of values) {
if (typeof cell === "number") total += cell;
}
Logger.log(total);
}
getValues() 回傳的是二維陣列:即使只讀一欄,每一列仍是 [值],所以用 [cell] 解構。
跟瀏覽器不一樣的地方
| 瀏覽器常見寫法 | Apps Script |
|---|---|
fetch(url) |
UrlFetchApp.fetch(url) |
console.log(開發者工具) |
Logger.log 或 console.log(看執行紀錄) |
DOM、alert |
沒有 DOM;用 SpreadsheetApp.getUi().alert() |
localStorage |
PropertiesService、CacheService |
| npm 套件 | 預設沒有;少數用 clasp 打包,或引用 Apps Script 程式庫 |
日期:儲存格裡的日期讀出來是 JavaScript Date。若你要的是畫面上的文字(例如 2026/9/15),用 getDisplayValues(),見 SpreadsheetApp。
V8 與舊 Rhino
新專案預設 V8,可用 const、箭頭函式、樣板字串、解構。很舊的專案可能還停在 Rhino。在專案設定可切換執行階段;除非要維護古早程式庫,否則留在 V8。
頂層不要寫「一載入就執行」的程式。編輯器儲存、載入時行為不如 Node 直觀;把工作放進具名函式,由執行鈕、選單或觸發條件呼叫。
若完全沒寫過 JavaScript,先跟完 第一支腳本,再看 YouTube 優質教學 裡 Matt Brigidi 的基礎課補語法即可,不必先上完整 JS 課程。