Quantcast
Channel: WFU BLOG
Viewing all articles
Browse latest Browse all 784

利用 Google 問卷(試算表)當小型資料庫__更新版__(二)讀取、儲存資料庫

$
0
0

(Pic from: veryicon.com)
由於本文為更新版的內容,主要是修正舊文的參數,關於重要的原理、Json 資料格式、使用要點等內容便不再重複,請直接參考舊文「利用 Google 問卷(試算表)當小型資料庫__(二)讀取、儲存資料庫」,以下直接利用「上一篇」 取得的參數來進行資料庫的讀取與寫入。


2013.3.20 公告

最近發現 Google 又封鎖了本文經由問卷儲存資料的功能,因此目前仍是只有舊版試算表(問卷)能正常運作。在我找到新的方法之前,需要此功能的讀者,請留下你的email,如 email 不想公開,可使用「私密留言」留下 email 及註明這件事。

請注意,將來新的方法我不會公開發佈,避免發生這兩篇更新版的結果,因此只有留下 email,日後我才會個別通知。


二、讀取資料庫

1. 轉換為 Json 格式:

根據「上一篇」→「一、製作資料庫」→ 第 14 個步驟,我們得到「https://spreadsheets.google.com/feeds/list/0AikclfTTti-0dGFNMHRKdFVIaG12eE9wbUdkS1NYYXc/od6/public/basic?alt=rss」這樣的字串。

將這一行改為以下字串:

https://spreadsheets.google.com/feeds/list/0AikclfTTti-0dGFNMHRKdFVIaG12eE9wbUdkS1NYYXc/od6/public/values?alt=json-in-script

2. 分析 Json 內容:

將改過的字串貼到網址列,從瀏覽器顯示的 Json 格式資料,依照「舊版的方法」,問卷問題的資料將儲存在以下的位置:

json.feed.entry[0].gsx$問題標題.$t
在「上一篇」中我們設定了兩個問題標題 "Q1" 及 "Q2",因此這兩個問題的資料將分別儲存在:

json.feed.entry[0].gsx$q1.$t
json.feed.entry[0].gsx$q2.$t

請注意標題 "Q1" 及 "Q2" 都被自動轉換成小寫 "q1" 及 "q2" 了,因此之後使用 javascript 讀取資料時也必須用小寫的參數。


3. 印出資料庫內容:

接下來使用以下簡單的 javascript 就能呼叫試算表資料轉換的 Json 格式,呈現在自己的網頁:


B:設定處理 Json 的函數名為「test」,括弧內的參數建議設定為 json。

C:變數「a」抓出資料庫內儲存的資料組數。

E~F:設定變數「b、c」抓出每筆資料的儲存欄位

G:印出每筆資料

K:最重要的一行,綠色字串就是步驟 1 我們更改後的字串;紅色字串代表把抓出來的 Json 格式資料傳送給要執行的函數;藍色字串必須填上處理 Json 資料的函數,就是 B 行的 test 函數。

可以開一篇文章貼上程式碼看看跑出來的結果。



三、寫入資料庫

1. 利用網址傳送資料:我們在「上一篇」→ 第 7 個步驟得到的字串「https://docs.google.com/forms/d/1iVpKF_oArILEsQmjar5Ds4Zd7IRiurx6osjuiSTltbA/formResponse

再配合第 8 個步驟得到的字串──

第一筆資料:entry.146652736
第二筆資料:entry.2142316379


假設我們第一筆資料填入 "WFU BLOG",第二筆資料填入 "http://wayne-fu.blogspot.com",那麼可組合成以下字串──

https://docs.google.com/forms/d/1iVpKF_oArILEsQmjar5Ds4Zd7IRiurx6osjuiSTltbA/formResponse?entry.146652736=WFU BLOG&entry.2142316379=http://wayne-fu.blogspot.com&submit=Submit
注意以上綠字的各種符號,網址填入參數必須以「?」問號開始,每筆參數、資料以「&」符號隔開,參數與資料之間使用「=」等號,最後填入「&submit=Submit」結束;

將以上字串貼到網址列按下 Enter,再回到試算表一看:



兩筆資料均順利寫入試算表!


2. 寫入資料注意事項:

  • 第 1 點的舉例只傳送兩筆資料,如果問卷有多個問題,依照以上格式將所有問題依序塞入字串即可。
  • 當使用 javascript 傳送資料時,為了避免某些字元在網址列被辨識錯誤,字串最好經過 escape 轉換,確保能成功存入試算表。


3. 動態傳送資料:使用 Iframe 來傳送資料的提示方法請參考「舊版文章」→「二、寫入資料庫」→「3. 動態傳送資料」。



四、資料庫應用舉例

舊版文章提供了「推文系統」 當作應用的舉例,目前而言比較近期的作品「部落格即時留言板 WYBOARD」會是較好的例子。

只是這兩個當作應用範例的話,程式仍是過於龐大,不是那麼淺顯易懂。將來有機會的話會弄個簡易範例,易於資料庫讀取、寫入的實際運用說明。

Viewing all articles
Browse latest Browse all 784

Trending Articles