這篇是我寫在 HappyMobs Wiki 上的文件,歡迎到那邊協助補完
用 Google 表格 (Form) 做網際連署等表單時,常會遇到以下需求:
- 最好可以即時公佈有哪些人已經參與連署
- 最好可以隱藏一些隱私欄位 (例如 email、電話等)
很可惜,需求 2 目前沒有很好的解法,至少現在是這樣。
解決方案
目前沒有很好的解法,但還是可以用笨方法解。以下是幾種笨方法、及其副作用的介紹。
For programmer: 或許這可以利用伺服端程式藉著 API 存取 Google 試算表後再顯示出來,但目前似乎並沒有人寫這玩意。如果你有寫了、或是有找到這類解決方案,歡迎協助編輯這份說明。
Google 試算表裡的「隱藏欄」
副作用:對會 HTML 的人來說等於沒隱藏。
最簡單、也最不推薦的方法,便是先在 Google 試算表裡選取某欄、然後按滑鼠右鍵選擇「隱藏欄」,接著再發布。但這種方法只是把該欄位在視覺上隱藏起來,其發布的網頁原始碼中仍含有那些隱私資訊,對於 會用 HTML 的人來說等於沒有藏。因此,真正私密的資料不建議用這種方法。
發佈「影文件」
副作用:需要人工手動進行,耗時、無法動態即時更新。
說穿了就是把資料內容「複製」到另一份試算表,刪去隱私資料後再發佈那份「影文件」,這樣可以確保發佈後的東西安全。
以下假設有一試算表 A 需要發佈並隱藏其中的隱私資料,將複製的步驟說明如下:
- 開啟試算表 A
- 點選 Google 文件介面中的「檔案>建立副本」,副本試算表的名稱請自訂 (在此以「B」為例)。
- 刪除試算表 B 中的隱私欄位
- 發佈試算表 B,並以試算表 B 的發佈網址為公佈名單網址。
如果你是想分享(而非發佈為 HTML) 給其他使用者,記得你刪除的資料依然會在「檔案>修訂版本資訊」裡出現,所以變成是要先在試算表 A 裡刪除敏感資料、複製出試算表 B 後,再行復原試算表 A 剛才刪除的資料。進行這樣的動作之前,請先取消試算表 A 的「表單>接受回應」,待資料復原後才打開。
日後要更新時有兩種方案可選:
同試算表、新版本
- 開啟試算表 A
- 點選 Google 文件介面中的「檔案>匯出> xls」,這樣你會下載一個 MS Excel 檔案,在此例為 A.xls
- 以硬碟上的軟體 (MS Office 或 OpenOffice 皆可) 開啟 A.xls,刪去敏感資訊後存檔
- 回到 Google 文件,開啟試算表 B
- 點選 Google 文件介面中的「檔案>上傳新版本」,接著選取硬碟上的 A.xls 上傳
這麼做的優點是發佈的名單網址 (試算表 B 的發佈網址) 不會變動,缺點是需要硬碟暫存、不方便在公用電腦等地使用。步驟 3 也可以先省略、待步驟 4 與 5 都做完後再直接用 Google 文件編輯,但若要這麼做請記得先取消「有變更時自動重新發佈」,免得把還沒刪除敏感資料的版本送出去。
新試算表
非常簡單,只要按著原來複製出試算表 B 的步驟再從試算表 A 衍生出試算表 C、試算表 D 等等徒子徒孫就可以了。缺點是發佈名單的位置會經常更動 (因為你每次更新的時候真正發佈的試算表都不一樣)。
其他連署方案
由於隱藏 Google 文件表單資料中的隱私資訊如此麻煩,若您真的很需要即時、方便的連署功能,建議採用 Zoho Creator 等其他連署方案,不要用 Google 文件。
剛剛才發現發佈為 HTML 時可以選擇發佈的範圍,不過只要改網址的 range 參數就可以輕易看到其他欄位了...如果用伺服端程式直接存取發佈後的 HTML 呢 XD?這樣就不知道原始網址了,而且應該比用 API 容易?
回覆刪除還是說那個網址有可能被搜尋得到之類的啊 = ="
風痕影,
回覆刪除是的,網址可以輕易取得。因為他的網址結構中有「key」這玩意,而同一份試算表的表單或發佈結果的 key 值是一樣的。
不過你的想法倒是適合「本來就不提供表單」的情況呢,感謝~