授權、配額與除錯
腳本能動,通常卡在三件事:OAuth 同意畫面、每日配額、6 分鐘被砍。正式交給別人用之前,先把這頁當檢查清單。
授權
第一次執行會列出要存取的範圍(Gmail、Drive、試算表等)。範圍來自你呼叫的服務,也來自 appsscript.json 的 oauthScopes。範圍越大,使用者越不敢按允許,Marketplace 審查也越嚴。
- 能只用
SpreadsheetApp就不要碰DriveApp。 - 進階服務、
UrlFetchApp會再加範圍。 - 「未經驗證的應用程式」警告對個人專案是正常的;發佈給網域或公開才需要走 Google 驗證。
執行身分:觸發條件以建立觸發的帳號跑;Web App 則看部署時選的「我」或「使用者」。同事改你的表卻用你的 Gmail 寄信,往往是觸發建在你帳號上。
配額與時間
官方表:Apps Script 配額。實務上最常撞到:
| 限制 | 為什麼重要 |
|---|---|
| 單次執行約 6 分鐘(Workspace 帳號可較長) | 大表必須批次 getValues/setValues |
每日 MailApp/Gmail 封數 |
免費帳號約百封量級;別拿來做電子報 |
UrlFetchApp 每日呼叫次數 |
迴圈打 API 很容易用完 |
| 觸發總數、同時執行數 | 重複建立時間觸發會疊加 |
超時不會自動接著跑。自己用 Properties 記「上次處理到第幾列」,下次觸發再續。
除錯
- 編輯器 執行紀錄:紅字堆疊、
Logger.log。 try/catch裡把error.stack寫進專用工作表,排程失敗才找得到。- 偵錯鈕可對 V8 下中斷點。
- 觸發失敗看「我的執行」或 Cloud Logging(需標準 Cloud 專案)。
權限錯誤 Authorization is required:函式被簡易觸發呼叫卻用了要授權的服務。改可安裝觸發,或改由選單手動跑一次完成授權。