Skip to main content

使用 Clasp 在本地環境開發 Google Sheets Apps Script:一個基於 Git 的版本控制方案

Table of Contents

## 使用 Clasp 在本地環境開發 Google Sheets Apps Script:一個基於 Git 的版本控制方案

# 摘要 (Introduction)

Google Sheets 的 Apps Script 提供了強大的功能擴展能力,但直接在瀏覽器中編輯這些腳本存在諸多限制。本文介紹如何透過 Command Line Apps Script Projects (clasp) 工具將 Apps Script 下載到本地環境進行開發,並利用 Git 進行版本控制,提高開發效率和程式碼品質。

# 研究方法 (Methods)

本研究採用實作導向的方法,依序說明從環境設置、連接 Google 帳戶到本地開發與部署的完整流程。特別著重於介紹如何整合 Git 版本控制系統,以實現更專業的 Apps Script 開發工作流。

# 研究結果 (Results)

## 環境準備與設置

  1. 安裝 clasp

    npm install -g @google/clasp
    
  2. 啟用 Google Apps Script API

    • 訪問 Google Apps Script 設定頁面
    • 確認 Apps Script API 已開啟使用權限
  3. 登入 Google 帳戶

    clasp login
    

    執行此命令後,系統會自動開啟瀏覽器要求授權,允許 clasp 存取您的 Apps Script 專案。

## 專案設置與開發流程

  1. 取得 Script ID

    • 開啟目標 Google Sheets 文件
    • 進入「擴充功能」>「Apps Script」
    • 在 Apps Script 編輯器中點選「檔案」>「專案屬性」
    • 複製顯示的 Script ID
  2. 將 Script 下載到本地

    clasp clone 您的_SCRIPT_ID
    

    此操作會建立一個本地資料夾,包含所有 Apps Script 檔案。

  3. 整合 Git 版本控制

    cd 您的專案資料夾
    git init
    git add .
    git commit -m "初始提交:從 Google Sheets 導入 Apps Script"
    
  4. 使用本地編輯器進行開發

    • 您可以使用任何偏好的程式碼編輯器(如 VS Code、Sublime Text)
    • 享受程式碼格式化、語法檢查等進階功能
  5. 透過 Git 管理開發進度

    git checkout -b 新功能分支
    # 編輯檔案後
    git add .
    git commit -m "實現新功能:XXX"
    

## 部署與測試

  1. 將修改推送回 Google Sheets

    clasp push
    

    此命令會將本地變更同步回 Google Sheets。

  2. 執行與測試

    clasp run 函數名稱
    

    您也可以直接在 Google Sheets 中測試更新後的腳本。

# 討論 (Discussion)

在本地環境開發 Apps Script 相較於傳統的瀏覽器編輯器有諸多優勢:

  1. 提升開發效率:本地編輯器提供更豐富的功能,如代碼補全、自動格式化等。

  2. 版本控制的優勢:透過 Git 管理,可以:

    • 追蹤所有程式碼變更
    • 實現分支開發,隔離實驗性功能
    • 方便團隊協作與代碼審查
    • 在出現問題時快速回滾到穩定版本
  3. 增強程式碼品質:結合本地開發工具的程式碼分析功能,有助於發現潛在問題。

  4. 離線工作能力:可在無網絡連接的環境下繼續開發,稍後再同步更改。

這種開發方式特別適合複雜的 Apps Script 專案,或需要多人協作的團隊環境。

# 補充說明:使用 clasp run 執行操作 Google Sheets 的腳本

在本地環境執行並測試會操作 Google Sheets 的 Apps Script 時,需要注意以下重要事項:

## 1. 設定適當的權限範圍

為確保您的腳本能成功操作 Google Sheets,需在 appsscript.json 檔案中定義適當的 OAuth 授權範圍:

{
  "timeZone": "Asia/Taipei",
  "dependencies": {},
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/script.external_request"
  ]
}

這些授權範圍讓 clasp 在執行時有權存取並修改您的 Google Sheets 檔案。

## 2. 部署為 API 可執行版本

Google 目前不允許未部署的 Apps Script 直接透過 clasp run 執行,因此需完成以下部署步驟:

  1. 開啟 Google Apps Script 編輯器
  2. 點選「部署」>「新部署」
  3. 選擇「執行 API」(而非 Web 應用程式)
  4. 設定適當的授權範圍
  5. 點選「部署」並取得 Deployment ID

## 3. 執行具有參數的腳本

當您的函數需要參數時,可以:

clasp run 函數名稱 -p '["參數 1", "參數 2"]'

這會在 Google 伺服器上執行您的腳本,並能夠操作目標試算表。

## 4. 使用 Service Account 實現自動化

對於需要在 CI/CD 環境或伺服器上自動執行的腳本,建議設置 Google Cloud Service Account:

  1. 在 Google Cloud Console 建立 Service Account

  2. 下載 Service Account 的 JSON 金鑰檔案

  3. 將目標 Google Sheets 共享給該 Service Account(並授予編輯權限)

  4. 使用以下命令登入並執行腳本:

    clasp login --creds service-account.json
    clasp run 函數名稱
    

這種方式特別適合建立自動化工作流程,無需人工介入即可操作 Google Sheets。

# 結論 (Conclusion)

使用 clasp 將 Google Sheets 的 Apps Script 下載到本地進行開發,並結合 Git 進行版本控制,代表了一種更專業、更有效率的工作方式。這不僅可以提高代碼質量,還可以更好地組織開發流程,對於依賴 Google Sheets 自動化的企業和個人開發者來說,是一個值得採用的開發策略。特別是透過正確設定授權範圍和部署方式,您可以充分利用本地開發環境的優勢,同時保持對 Google Sheets 的完整操作能力。