Google Docs Spreadsheet與Google App Script的結合應用

作者/許至輝

概述 身為版控人員的你,是否對於源源不絕的過版需求信件感到無奈和無助呢? 去年探討的主題: [以Google Docs Spreadsheet做為資料庫應用程式開發之實作],對於專案版控人員的效率可說是提高了不少。由於專案的複雜度高,對於版控人員管理版控文件的困難度也相對提高。繼之前實作的Google Docs過版文件查詢應用程式完成後,著實促進了專案的版控人員的工作效率。為了能夠讓專案的開發能夠更節省又更有效率,我們繼續朝Google線上文件的相關應用作更深入的探討。這次,我們將實作Google的另一種雲端協作技術: [Google App Script],來更有效率地使用Google SpreadSheet。 透過Google App Script, 我們可以在Google的各種雲端服務來觸發各種動作,例如傳送電子郵件或建立「Google 日曆」邀請函,或是動態產生內容。這些以 JavaScript 編寫的指令碼執行在 Google 伺服器中,並且能存取大多數的 Google 產品,讓我們能透過這些Script輕鬆地自動處理各樣的工作。下面這張取自官方的圖,很清楚地秀出了Google App Script和Google文件的高度相容性。

《圖1》圖片來自:http://code.google.com/intl/zh-TW/googleapps/)
介紹 [Google App Script] 其實類似一種可以在雲端執行的JavaScript,而且可讓我們擴充自己的Google App並建立雲端應用。它非常靈活,開發的工具可以搭配 Calendar ServicesFinance Services Jdbc ServicesMail ServicesSoap ServicesUrlFetch ServicesXml Services,總之,可以應用的地方太多了。 設計完成的Google App Script可以直接在瀏覽器上執行,透過Google雲端的編輯平台和建置環境,我們可以在任何有網路的地方進行開發,執行,還可以線上Debug,很棒吧! 另外,使用Google App Script,既然是雲端,當然也一樣可以排除Client端伺服器的各種安裝和維護成本。 要開發自己的Google App Script,一樣只需要有Google的帳號即可。除了直接連到Google的線上編輯平台: http://script.google.com (圖二),也可以透過任何一種支援執行Google App Script的Google服務進入編輯畫面,例如Google SpreadSheet(圖三, 圖四),接著就可以開始開發屬於我們自己的Google App Script。

《圖二》

《圖三》

《圖四》
基本上開發界面仍維持Google一貫的簡約風格,首先針對重點工能作介紹。 File工具列裡面(圖五),可以看到有Manage Versions以及Build a user interface。其中Manage Versions主要是針對發行Web Service時需要用到(圖六),而Build a user interface(圖七)則提供了UI的開發,從圖七可以看到就像.NET開發一樣幾乎不用寫任何程式碼就可以完成UI的設計,可說Google真是親和力十足。所有的UI控制項用拉的就好,再從右邊的選單選取連結的觸發函式。

《圖五》

《圖六》

《圖七》
至於除錯和執行,先選定要執行的function後,再點選左邊的箭頭執行或蟲作除錯(圖八, 圖九)。除錯時一樣可以設定中斷點,並有即時運算視窗可以看。相當貼心的設計。

《圖八》

《圖九》
既然是雲端,當然需要有分享的功能啦! 下圖(圖10)紅色圈圈處,一朵雲的圖案,就是讓我們將寫好的應用發行成Web App分享給大家。發行時可以選擇剛剛進行的Manage Versions所設定的版本,另外也可以選擇誰可以使用這個App。發行成Web App後,便可以從其他各種Google服務使用它。

《圖十》
實做教學 應用程式功能說明 由於目前的專案開發,都是使用Google SpreadSheet做過版資料的申請和匯整, 線上文件雖然有即時共同的編輯功能,但仍有一個相當重要的資訊沒有記錄。那就是每個人的編輯記錄。為了能夠方便版控人員更確實地掌握過版清單的狀態,我們透過Google App Script來撰寫記錄過版清單內容的修改歷程的程式。如此一來,任何蛛絲馬跡都不會逃過版控人的手掌心。 Step-By-Step 下圖為這次實作所使用的過版清單(圖11)

《圖十一》
首先我們先撰寫當文件的cell被編輯時,所要trigger的function(圖12)。

《圖十二》
Function onEdit(e)傳入的參數e為cell被編輯時的事件參數,其主要屬性如下

《圖十三》
編輯好事件處理函數(OnEdit)後,便可以透過下圖紅色圈圈的地方,開始設定觸發程序。儲存之後,就完成了記錄Log的功能

《圖十四》
建立好事件處理觸發程序之後,接著我們來實驗看看吧! 修改內容之後,Google App Script便自動幫忙在修改的cell上增加comment,如此一來,任何修改都會留下痕跡了。

《圖十五》
結論 Google App的相關應用可說是怎麼玩也玩不完,因為推出得太快。Google的服務多,插件多,而且都是雲端的,所需要的就是網路。但畢竟Google是屬於沒有版權的東西,一切免費,一切雲端,因此也沒有任何保障說可以永久使用。有許多服務在推出幾年後,反應不夠好就會被Google下架。另外也會有隱私保密的考量,一切資訊都存在Google的雲端主機,如果Google真的想要得到什麼資訊,簡直易如反掌,我想這也是為什麼Google App只能局限於小型且不牽涉到個人隱私的專案或個人使用。但若以提供個人工作效率來說,可說是處處有黃金。真得是很棒的服務喔! 參考資料 1.http://google-gdata.googlecode.com/svn-history/r887/docs/folder40/N_Google_GData_Spreadsheets.htm 2.https://developers.google.com/apps-script/storing_data_spreadsheets?hl=zh-TW#writing-3 3.http://mashe.hawksey.info/2011/05/app-app-and-away-workshop-handout-open4ed-gas/ 4.http://docs.google.com/support/bin/answer.py?hl=en&answer=159999/ 5.http://code.google.com/intl/zh-TW/apis/spreadsheets/data/2.0/reference.html#ListParameters 6.http://code.google.com/intl/zh-TW/googleapps/