我在 2014 年時就已經注意到 GAS 了, 大概在 Google 雲端硬碟推出後, 我發現裡面的 GAS 可說是 Google 版的 VBA (Visual Basic for Applications), 特別是在 Google 試算表中, 除了實作了與 Excel 一模一樣的函數外, 還可以用 GAS 撰寫類似 VBA 巨集的功能來達到操作自動化.
不過, GAS 不只是函數與巨集而已, 它提供了程式編輯器與除錯器等線上應用程式開發工具, 可說是全部 Google Apps 操作自動化的瑞士刀, 其功能比之 VBA 有過之而無不及. 最重要的是, GAS 採用了前端網頁程式設計師最熟悉的 Javascript 語法, 只要學習如何用 Javascript 語法操作 Google Apps 的類別即可.
以下是這幾天學習所整理的筆記 :
一. Google Apps (雲端應用程式) :
Google 是雲端服務的先驅, 推出了許多 SaaS (Software As A Service, 軟體即服務) 應用軟體 (Google Apps), 例如 :
- Google Search (搜尋引擎)
- Google Gmail (谷歌信箱)
- Google Calendar (谷歌日曆)
- Google Contacts (谷歌聯絡人)
- Google Translation (谷歌翻譯)
- Google Map (谷歌地圖)
除了上面這些元老級雲端應用軟體外, Google 於 2012 年推出 Google Drive (雲端硬碟) 檔案應用服務, 將許多 Google Apps 都整合在雲端硬碟裡, 每個 Google 帳戶擁有 15GB 的雲端硬碟容量來儲存 Google Apps 產生的檔案, 使用者可建立與編輯如下最常用的 Apps 文件, 並可與其他 Google 用戶分享以便協同工作 (collabortion) :
- Google Docs (文件, 功能相當於 Word)
- Google Slides (簡報, 功能相當於 PowerPoint)
- Google Sheets (試算表, 功能相當於 Excel)
- Google Forms (表單)
Google Apps 所建立的檔案都以 Google 原生檔案格式儲存在雲端硬碟中, 並具有各自的副檔名, 例如 Google 文件是 .gdoc; 試算表副檔名是 .gsheet 等等. 這些 Google Apps 原生檔案可利用 GAS 彼此互動與自動化操作, 例如連結 Gmail 與 Google Calendar (谷歌日曆), 依據日曆上的行程寄送生日卡或提醒訊息; 甚至可連結第三方軟體例如 Line, 向特定群組或 Line 好友發送即時訊息. 除了在雲端硬碟中建立原生檔案, 也可以上傳任何類型的檔案到雲端硬碟中儲存.
在 Google 雲端硬碟頁面中按下左上角的 "+新增" 鈕, 在主選單中按 "+資料夾" 鈕可在目前的雲端資料夾下建立子目錄; 按 "檔案上傳" 可點選多個檔案一次上傳到目前的雲端資料夾; 按 "資料夾上傳" 則可點選一個本機資料夾上傳; 按 "Google 文件", "Google 試算表" 與 "Google 簡報" 鈕可建立原生檔案 :
選擇 "更多" 會跳出子選單, Google Form 與 Google Apps Script 等應用服務 :
在雲端硬碟中所建立的 Google Apps 原生檔案有其特定的檔案格式與副檔名 (不會顯示), 例如 Google 文件是 .gdoc; 試算表是 .gsheet; GAS 則是 .gs 等等, 不過這只是類似 link 的捷徑, 並非真正的副檔名.
二. Google Apps Script (雲端應用程式語言) :
GAS 是 Google Apps 操作自動化所使用的程式語言, 它基本上是由兩個部分組成 :
- Javascript 語法 (主要是 1.6, 也包含部分的 1.7 與 1.8 與 ECMAScript 5)
- Google-defined classes (用於操控各個 Google Apps 的類別)
# https://en.wikipedia.org/wiki/Google_Apps_Script
雖然 GAS 與前端網頁的 Javascript 用法不完全相同, 但在基本語法上是一樣的, 參考 :
# 網頁技術速學筆記 (三) : Javascript 基礎
GAS 比起 VBA 具有如下優點 :
- 跨平台 (cross platform) :
GAS 應用程式於 Google 雲端伺服器中運行, 不論本地平台作業系統是 Windows, Linux, Mac OS, iOS, 還是 Android, 只要有瀏覽器均可使用; 而 VBA 程式則不行. - 版本獨立 (version independent) :
Google 應用程式 Docs 與 Sheets 等會自動存檔於 Google 雲端, 可從任何設備以瀏覽器存取編輯, 完全不需要擔心類似 Office 軟體版本問題.
- 每一個 GAS 程式不可連續運算超過 6 分鐘.
- 每一個 GAS 程式每秒最多只能呼叫執行 30 次.
- 每天只能傳送電子郵件給最多 100 個不同收件者.
- GAS 程式的運算都是阻塞式運算, 不提供事件驅動與非同步模式.
新增雲端硬碟檔案時點選 "Google Apps Script" 會開啟一個獨立的 GAS 程式專案, 預設檔名為 "程式碼.gs" (可更改), 程式中有一個預設函數 myFunc() :
GAS 程式基本上就是在這些使用者定義函數中操作 Google Apps 物件 (類別) 而已.
三. Google Sheets (試算表) :
在 Google Apps 應用中, 試算表的角色特別重要, 因為它通常被拿來作為簡便的雲端資料庫使用, 對於中小型應用來說 Google 試算表作為資料庫的代用品是綽綽有餘的, 而且它內建了幾乎與 Excel 完全一樣名稱的函數, 可以直接在試算表儲存格中用 "=" 來呼叫內建函數, 也可以自行撰寫客製化函數來呼叫, 以存放於儲存格中的的數據來進行運算.
我在 2014 年第一次邂逅 GAS 時曾簡單地用它 Google 試算表來幫姐姐估算國中會考的落點, 不過當時只是單純呼叫內建函數而已, 參考 :
# Google Apps Script 測試
建立新的試算表後即可在儲存格中輸入資料與進行計算, 使用方式與 Microsoft 的 Excel 完全一樣 (內建函數也是一樣), 例如 :
試算表儲存格操作可參考 Excel :
# Excel 函數學習筆記 (一) : 試算表基本操作
Google 雲端硬碟中所儲存的檔案也可以個別下載到本機中儲存, 也可以在桌上型電腦下載安裝 Google Drive "備份與同步處理" 軟體, 它會在本機中建立與 Google 雲端硬碟雷同的檔案目錄結構, 並自動維持兩端同步 :
# https://www.google.com/drive/download/
不過在下載 Google 文件/試算表/簡報時, 會自動轉換成 Microsoft 之 .docx, .xslx, 以及 pptx 檔案格式, 而不是 Google Apps 原生檔案.
參考 :
# 看見數據分類 google 試算表
# 即時監控控必備 Google 試算表 add-on x
# Google Apps Script 漏洞,恐讓駭客經由軟體服務 (SaaS) 平台散布惡意程式
很高興又多了一位 GAS 同好。
回覆刪除我用 Google 表單讓外籍看護輸入家慈的血壓、血糖...等數據,即時由 GAS 通知 LINE 家庭群組,數據異常時還會出現貼圖與圖表。
用 LINE bot 搭配 GAS 做一個 LINE 訊息備份,工作夥伴們在 LINE 群組內留下的文字、圖片、貼圖等訊息可以在試算表與雲端硬碟內永久保存,弭補 LINE 過期無法讀取照片、檔案的缺點。
用 Google 表單做一份詢價單,客戶填了詢價單後會通知業務員,再經簡單的操作就把資料帶入報價資料,套表輸出PDF完成報價單。
商品出售時輸入客戶資料並設定下個月自動發送問券,且可事先預填出貨日期、型號、數量等部分資料,發送後過幾天再通知有哪些客戶未填回,可再重新發送...。
前輩, 我是初學, 請不吝指教與指正喔! 唯有交流方能進步!
回覆刪除不敢不敢,您長期的分享讓我獲益匪淺,衷心銘謝。
回覆刪除感謝大大的分享
回覆刪除謝謝留言, 我也只學了一點就忙別的了, 有空再回來繼續學.
回覆刪除推推 狐狸夥伴//
回覆刪除也是在書店看到<>
而入門的//,之前雖然知道GAS的存在 但大部分google都是原文文件 啃不太下去XD
看了一個禮拜的感想是 內容很多,但有些code的部分 沒有很說明編寫出來的原因
跟可能是後續出版後才多了一些用法//
書中sendmail那邊一直搞不懂用法卡關XD,最後是網路上找到gmail.app 才比較了解編者的概念。
我也是好想抽出時間繼續學習 GAS 啊!
回覆刪除推薦系列文章: 森林裡的園藝眼鏡 大大寫的
回覆刪除整合 Google 服務的燃料——透過 Google Apps Script (GAS) 加速你的工作速度
系列文章
而且還貼心的整理到最後一篇:
D30 - 如何看自己需要哪篇 Apps Script 的功能?三十天 Apps Script 旅程的總整理
還有他的 FB 公開社團:
Tips for Google App Script
Darrent 兄, 感謝您!
回覆刪除感謝寶貴分享,我也想花時間學習GAS,及相關生活應用整合到如LINE平台的運用。
回覆刪除希望能經由你的分享,我也能有更好的收獲,並進一步分享自己的學習成果。
收到! 我會抽點時間推一下進度, 互相切磋唄!
回覆刪除