Skip to content

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

觸發條件

觸發條件(trigger)讓函式在「開啟檔案、改儲存格、送出表單、時間到了」時自己跑。分兩類:簡易觸發靠函式名稱自動生效;可安裝觸發要在編輯器或用 ScriptApp 建立,權限比較完整。

簡易觸發

只要專案裡有這些名字的函式,繫結檔案就會呼叫它們:

函式 何時跑 常見用途
onOpen(e) 有編輯權的人打開檔案 加選單
onEdit(e) 有人改了儲存格 自動時間戳、驗證
onSelectionChange(e) 選取範圍變了 少用;容易太吵
onInstall(e) 安裝編輯器外掛 通常改呼叫 onOpen
doGet / doPost 網頁應用被請求 網頁應用
function onEdit(e) {
  const sheet = e.range.getSheet();
  if (sheet.getName() !== "工作區") return;
  if (e.range.getColumn() !== 1) return;
  e.range.offset(0, 1).setValue(new Date());
}

e.range 是被改的格子。務必先過濾工作表與欄,否則整張表每次按鍵都會跑。

簡易觸發的限制:不能呼叫需要授權的服務(不能寄信、不能開別人的 Drive 檔)、逾時約 30 秒、開檔者若只有檢視權不會跑。

可安裝觸發

編輯器左側時鐘 → 新增觸發條件,或用程式:

function createDailyTrigger() {
  ScriptApp.newTrigger("refreshReport")
    .timeBased()
    .everyDays(1)
    .atHour(8)
    .create();
}

常見事件:時間驅動、試算表開啟/編輯/變更、表單提交、日曆更新。表單提交、每天寄信、讀 Gmail,都必須用可安裝觸發。

時間驅動的時區看專案設定,不是你筆電的時區。同一函式不要重複按「建立」,否則會疊很多份觸發;上線前到觸發條件頁清乾淨。

官方對照表:簡易觸發可安裝觸發