2010/09/29

Google Spreadsheet 的應用 query filter 及簡單的 API

Google 有個 Google Live Form 的表單可以快速建立讓使用者輸入的表單。後端資料儲存在 spreadsheets,但是資料通常是一個很大的 table 不能只秀出我們要得資料。



通常這功能用來做訂便當系統是很方便的。






透過 publish to web  可以將網頁的內容輸出到網頁,讓使用者可以透過網頁觀看結果。但資料會太多,所以需要過 filter 的功能。



但現在有了 spreadsheets 有了 sql query 的功能可以讓我們自訂撈出想要的資料即可。

 Google Spreadsheet  提供類似 SQL query  的查詢工具,可以透過簡單的 SQL 語法撈出我門想要的資料。 他是透過 Google Visualization API Query Language.  的語法來做簡單的影用,在 youtube 上面有影片介紹如何使用:
 

http://docs.google.com/support/bin/answer.py?hl=en&answer=159999

範例:
Full example: =QUERY(A1:E6, "select avg(A) pivot B")
說明:
A1:E5 表示資料蘭範圍,"select avg(A) pivot B" 是 sql select 查詢句, from 預設值為 A1:E5 當然也可以指定不同的 sheets 來做查詢。

Select語法說明如下,和標準的 sql 很雷同:
http://code.google.com/intl/zh-TW/apis/visualization/documentation/querylanguage.html#Setting_the_Query_in_the_Data_Source_URL


看裡面的 select 及 where 兩個部份的 example 說明

於是我開了一個新的 sheet R0033 並作成這樣的查詢句
 其中 week_check_list 指的是表單 sheet 名稱,week_check_list!A:S 是說
這個表單的A~S欄位為資料來源。

select * 這裡代表顯示所有的欄為,當然也可以單獨指令欄為 ex: select B,C,D

where D like 'R0033' 指的是 D欄位的字串符合 R0033 的顯示出來

order by A desc 資料依照 A 欄位的排序,新的在上面

於是這段 sql query 我寫在 R0033 這個 sheet 內,就顯示了這樣的內容....

所以擴大輸出 all sheets 到 web 就變成這樣,使用者點選上面的編號就可以依照 sql 查詢句工作撈出的結果顯示在 web 上面。



如果還要進一步的運用資料,可以參考關於 Setting the Query from JavaScript

這裡直接提供一個 code sample 可以直接修改並且線上測試
http://code.google.com/apis/ajax/playground/?type=visualization#using_the_query_language

首先要餵給它 data source : Setting the Query in the Data Source URL

這裡用它原始的 data source 測試,我把它改成 table 的格式,可以讓每個人只要換 key 就可以套用。

測試網址(純html可以下載使用):http://code.jangmt.com/googleapi/test.html



詳細請看 google 說明: http://code.google.com/intl/zh-TW/apis/visualization/documentation/reference.html#queryobjects
 參考:http://blog.ericsk.org/archives/1417

補充說明:
剛剛測試完成後,本來可以的表單功能,送出竟然出現錯誤....^^!!!! 這是 bug 呀....google 你出來公塊賣...

張貼留言