2012年8月15日 星期三

使用Google Apps Script讀取試算表中的資料

最近在研究 Google Apps Script,這實在是很有趣的新玩具。
如果想要透過 Script 去讀取雲端硬碟中試算表的資料,並透過HTML的網頁印出在瀏覽器上,在 Google Apps Script 的說明頁面上,有關於 HTML service 的說明,也在 Pulling Data into a Template 這個 section 提供了一個範例。但這個範例卻不夠完整,初入門的人(就是指我)會搞得一團霧水,又沒辦法正常執行程式。

我將在這篇文章中,將說明文件中的範例程式,一步一步說明建置方法。

[[MORE]]

首先從雲端硬碟中,找出想要讀取資料的試算表,將想要讀取的範圍進行命名。

下拉式選單「資料」,「已命名和受保護的範圍」,「新增範圍」,給個名稱,例如 NamedRange1。

接下來必須獲得該文件的「key」,可以直接從該文件的網址(url)獲得,例如網址是

http://spreadsheets1.google.com/ccc?key=tvGWKARIojJaOIGNX7C4qyg&hl=en#gid=0

那麼 key 就是 tvGWKARIojJaOIGNX7C4qyg

總之,我們要存取資料,總是要告訴程式說,我們要存取的資料位於何處。而 Google 透過 key 取得文件位置,再透過範圍名稱取得資料範圍。

接下來在雲端硬碟中,新增一個「指令碼」文件。
該文件中必須有兩個檔案,一個是副檔名 .gs 的程式碼,另一個則需新增一個 .html 的網頁範本。

.gs 的程式碼範例如下:

[codebox 1]

.html 的範例如下:

[codebox 2]

然後去設定發布版本

「檔案」、「管理版本」

然後進行發布

「發布」、「佈署為網路應用程式」


這樣就可以了!

2012年8月14日 星期二

使用 Python 管理 Google Apps

這是上一篇文章的續集:Google Apps 遠端管理,透過 Provisioning API

首先必須抓 Python 的 Google Data APIs 的 client librarys
[[MORE]]
下載解壓縮。

然後必須針對 ssl 連線會出錯的問題進行 patch。patch 檔在這篇討論的 comment 3

patch gdata-2.0.17/src/gdata/client.py < issue-416-hotfix.patch

然後進行安裝。

sudo python setup.py install

測試可以用這個指令:

python gdata-2.0.17/samples/apps/userprovisioning_quick_start_example.py python userprovisioning_quick_start_example.py --client_id="1234567890.apps.googleusercontent.com" --client_secret "lCdEIxxxxxxxxxxvbTjV" --domain="shsh.ylc.edu.tw"


client_id 跟 client_secret 請先自行取得,取得方式在前文中已有說明。

Google Apps 遠端管理,透過 Provisioning API

自己撰寫程式從遠端管理 Google Apps,必須透過 Provisioning API 。

啟用 API 存取的方法如下:

  • 登入您的管理控制台。

  • 按一下 [網域設定] > [使用者設定]。

  • 如要使用 Provisioning API:勾選 [啟用 Provisioning API] 旁的方塊。

  • 按一下 [儲存變更]。


[[MORE]]
接下來你要選一種慣用的程式語言,用來呼叫 Provisioning API。
語言包括 PHP、Python、Java、.Net C#。
這裡有非常多 Provisioning API 的呼叫範例:Google Apps Provisioning API

目前 PHP 需要搭配 ZendFramework,不過不知為何,我在 FreeBSD 9 (32/64 bit) 中執行會一直發生 segment fault。之前在 FreeBSD 8 上則很正常。

使用 Python 的sample呼叫某些 API,則會要求你輸入 client id 及 client secret。
取得的方法是到 Google APIs Console 先註冊一個 Project。這個其實就是透過 OAuth 在沒有個別使用者的帳號密碼的情況下,存取他們某些特定的資料,例如通訊錄等。Google 為了避免濫用,這些存取是有數量限制的,如果要大量使用頻寬,則必須付費。
在 Google APIs Console 裡面,一個 Project 最多可以設定 7 個 client IDs。

如果只是要做一些比較簡單的應用,例如寄信給資料表中的某些人,在信中使用特定的稱呼(例如小隆先生您好),而不像寄發大量廣告信,則可以有更簡單的方法。即是在 Google 雲端硬碟中,撰寫 Google Scripts。這些 Google Scripts 是使用 JavaScript。

在這裡有官方所提供的許多範例及參考文件:
Google Apps Platform