Skip to content

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

繫結與獨立專案

Apps Script 專案有兩種掛法。選錯的話,getActiveSpreadsheet() 會是空的、選單加不上去,或腳本無法跟著試算表一起複製。

繫結腳本(container-bound)

從試算表、文件、簡報或表單的 擴充功能 → Apps Script 建立的專案,會綁在那個檔案上。

  • 能用 SpreadsheetApp.getActive()DocumentApp.getActiveDocument() 等「目前這個檔案」。
  • 能改該檔的選單、側欄、對話方塊。
  • 簡易觸發 onOpenonEdit 只在繫結腳本有效。
  • 複製試算表時,腳本通常一併複製(權限仍要重新授權)。

適合:這一份表專用的自動化、給同事用的自訂選單。

獨立腳本(standalone)

script.google.com 按「新增專案」,或用 clasp 建立 --type standalone

  • 檔案活在雲端硬碟,不依附某一份 Sheet。
  • 要用 SpreadsheetApp.openById("試算表ID")openByUrl() 去開檔。
  • 無法替「某一份試算表」加選單(除非另外做外掛)。
  • 適合排程、跨多個檔案、之後要發佈成網頁應用或 Workspace 外掛。

試算表網址裡 /d/ 後面那串就是 ID:

https://docs.google.com/spreadsheets/d/這一段是ID/edit
function writeToWorkbook() {
  const ss = SpreadsheetApp.openById("試算表ID");
  ss.getSheetByName("工作表1").getRange("A1").setValue(new Date());
}

怎麼選

需求 建議
只服務這一本試算表、要加選單 繫結
每天彙整很多份表、或沒有「主檔」 獨立
要發佈成外掛、Chat 應用、網頁應用 獨立(再設定清單檔)
本機用 clasp、Git 管理 兩種都可以;獨立較好拆專案

同一份試算表也可以同時有繫結腳本,再被獨立腳本用 ID 開啟。權限以執行該腳本的 Google 帳號為準,不是檔案擁有者自動等於腳本擁有者。

清單檔 appsscript.json 記錄時區、OAuth 範圍、外掛/網頁應用設定。在編輯器「專案設定」勾選「在編輯器中顯示 appsscript.json」就能看到。進階部署見 網頁應用外掛