banner
Light

Light Log

做充满希望的动物
x
github
bilibili
steam

Google Apps Script學習記錄

gas-eyecatch-960x504

第一次聽說 GAS(Google Apps Script)是在入職現在公司實習崗位的時候。前輩讓我接手一個公司內部用的小工具的後續開發。那個工具就是用 GAS 寫的。依託於 Google 本家,它無縫和 G 家的各類工具集成,開放的 API 也非常全面而好用(當然你也可以在其他語言中調用谷歌的 API,只不過 GAS 是無縫集成的所以體驗最好罷了)。印象最深刻的是它對於 Google Spreadsheet 和 Google Calendar 的支持。我在空閒時間用 GAS 給研究室放在 Spreadsheet 上的日程表寫了一個自動導入 Calendar 的功能。基本上完全就是無腦套官方給的接口,敲代碼絲滑無比到令人感動。如果你平時總是被各種奇葩文檔折磨,請務必體驗一下 GAS。可能作為一門腳本語言(或者說平台),它也有複雜的一面,但是當只是想用它做一個簡單的 G 家服務的自動化和協同的時候,它在剛入門的時候就能提供非常美好的體驗。

關於本地化與版本控制#

GAS 提供了雲端的編輯器,同時也支持簡單的版本控制。但是對於用習慣了 Git 和 Github 的人而言,本地化可能是個更好的選擇。Google 的開發者們為此提供了一個很棒的開源工具:Clasp

安裝 Clasp#

Clasp 被封裝為一個 Package,如果你本地安裝了 npm,那麼你只需要運行:

npm install -g @google/clasp

如果本地沒有安裝 npm, 我的建議是安裝一個,我們可以從這裡跳轉到 Node.js 的下載界面。他們提供多平台的支持,另友情提醒請不要盲目追更新版本,LTS 版本是更穩妥的選擇(沒有人會願意看到每次運行程序的時候都會彈出幾行鮮紅的警告)。

在我們開始用 clasp 構建我們的腳本和應用之前,還需要完成一件要緊的事情。那就是登錄我們的谷歌帳號。不然谷歌會拒絕我們和沒有連接權限的雲端進行交互。我們可以運行以下命令:

clasp login

這會打開本地默認的瀏覽器,要求我們登錄谷歌帳號。我們需要登陸那個想要在上面部署應用或者腳本的帳號。

當然,如果你不信任你的電腦所處的環境,在每一次離開的時候,你可以選擇登出,這也只需要簡單的一行命令:

clasp logout

好了,到這裡我們就完成了準備工作,可以開始用 clasp 在本地部署我們的項目了。

在本地部署項目#

利用 Clasp,我們可以很容易的在本地創建一個新項目:

clasp create

這會在當前工作目錄創建一個默認的新項目。當然它也提供了一些更豐富的選項,我們可以用--title "My Script"來指定項目的名稱, 也可以用--type指定這個項目的類型。當然通過--rootDir選項,我們也可以指定新項目存放的位置。另外有一個和 G 家的服務息息相關的選項--parentId "1D_Gxyv*****************************NXO7o",這可以讓我們把項目綁定到某一個特定的服務,比如說某個 Google SpreadSheet。對了,這裡的 ID 我們可以在對應服務的網址上找到:docs.google.com/presentation/d/{id}/edit

當然更多的情況下,我們往往是針對某一個已經存在的服務去編寫項目,這時候clasp clone命令就很有用。我們可以直接用對應服務的網址來把對應的腳本項目複製到本地:

clasp clone "https://script.google.com/d/15ImUCpyi1Jsd8yF8Z6wey_7cw793CymWTLxOqwMka3P1CzE5hQun6qiC/edit"

到這裡,我們已經成功在本地部署了項目,當我們想要發布到雲端或者從雲端拉取的時候,我們可以使用clasp pullclasp push命令,請務必注意這兩個命令和 Git 的根本不是同一回事,它們只會單純的覆蓋掉原先的內容。友善的建議是,避免使用clasp pull,並且只在必要的時候使用clasp push。當然,clasp 的開發團隊比較細心,使用clasp pull的時候,他們通常不會直接覆蓋掉我們本地的文件,當 clasp 檢測到本地存在同名文件的時候,它會結束進程並且提醒我們這一點。

使用 Git 來對本地的 GAS 項目進行管理#

我們指望不上 GAS 自己在雲端內置的版本管理系統,它只提供了有限次數的版本,並且各類操作也沒有 Git 那麼完善。所以我們下一步的目標就是使用 Git 和 Github 來對本地的項目進行管理。其實無非就是在本地新初始化一個 Git 倉庫而已。

我們把工作目錄跳轉到對應項目內。然後初始化一個 Git 倉庫:

git init

如果只是想要在本地進行版本管理,那麼到這裡就可以照常使用 git 了。但是如果還想要上傳到 Github 等雲端倉庫,那麼我們還需要多幾步。

首先我們需要編寫.gitignore 文件,來讓 Git 忽略掉一些只需要保留在本地,而且也不希望 Git 去管理的文件。如果我們查看 clasp 在本地給我們創建的項目,我們就會發現有一個隱藏的.clasp.json 文件,裡面記錄了我們的 script id 和 parent id,用於 clasp 定位雲端上的相關文件。顯然這是不需要 Git 去管理的。所以我們可以在.gitignore 裡面忽略掉它。

touch .gitignore
echo ".clasp.json" > .gitignore

當然,你也可以用編輯器(比如 vscode)打開文檔編輯後保存。

接下來我們就可以正常執行git add等命令了。

git add --all
git commit  -m "init"

最後,你可以在 Github 上創建一個新倉庫,並將本地的倉庫推送上去。

未完待續#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。