Skip to content

建立 2026-09-15 更新 2026-09-15

JavaScript 與 V8

Apps Script 的語法是 JavaScript(現在預設 V8 執行階段),但執行環境不是瀏覽器。沒有 windowdocumentfetch;改用 Google 提供的服務物件。會一點 JS 的人,卡關通常在「服務怎麼叫」,不是語法。

你需要的那一點 JS

夠用日常自動化的核心很小:

  • 變數const / let;少用 var
  • 函式:頂層 function 名稱() { } 才能從編輯器下拉選、才能當觸發目標。
  • 陣列:試算表一列是一個陣列,整張表是「陣列的陣列」。
  • 物件{ name: "Ada", age: 36 },對應一列裡的具名欄位時很好用。
  • 迴圈forfor...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.logconsole.log(看執行紀錄)
DOM、alert 沒有 DOM;用 SpreadsheetApp.getUi().alert()
localStorage PropertiesServiceCacheService
npm 套件 預設沒有;少數用 clasp 打包,或引用 Apps Script 程式庫

日期:儲存格裡的日期讀出來是 JavaScript Date。若你要的是畫面上的文字(例如 2026/9/15),用 getDisplayValues(),見 SpreadsheetApp

V8 與舊 Rhino

新專案預設 V8,可用 const、箭頭函式、樣板字串、解構。很舊的專案可能還停在 Rhino。在專案設定可切換執行階段;除非要維護古早程式庫,否則留在 V8。

頂層不要寫「一載入就執行」的程式。編輯器儲存、載入時行為不如 Node 直觀;把工作放進具名函式,由執行鈕、選單或觸發條件呼叫。

若完全沒寫過 JavaScript,先跟完 第一支腳本,再看 YouTube 優質教學 裡 Matt Brigidi 的基礎課補語法即可,不必先上完整 JS 課程。