2008/12/18

隱藏發佈後之 Google 試算表的某些資料

這篇是我寫在 HappyMobs Wiki 上的文件,歡迎到那邊協助補完


用 Google 表格 (Form) 做網際連署等表單時,常會遇到以下需求:

  1. 最好可以即時公佈有哪些人已經參與連署
  2. 最好可以隱藏一些隱私欄位 (例如 email、電話等)

很可惜,需求 2 目前沒有很好的解法,至少現在是這樣。

解決方案

目前沒有很好的解法,但還是可以用笨方法解。以下是幾種笨方法、及其副作用的介紹。

For programmer: 或許這可以利用伺服端程式藉著 API 存取 Google 試算表後再顯示出來,但目前似乎並沒有人寫這玩意。如果你有寫了、或是有找到這類解決方案,歡迎協助編輯這份說明

Google 試算表裡的「隱藏欄」

副作用:對會 HTML 的人來說等於沒隱藏。

最簡單、也最不推薦的方法,便是先在 Google 試算表裡選取某欄、然後按滑鼠右鍵選擇「隱藏欄」,接著再發布。但這種方法只是把該欄位在視覺上隱藏起來,其發布的網頁原始碼中仍含有那些隱私資訊,對於 會用 HTML 的人來說等於沒有藏。因此,真正私密的資料不建議用這種方法。

發佈「影文件」

副作用:需要人工手動進行,耗時、無法動態即時更新。

說穿了就是把資料內容「複製」到另一份試算表,刪去隱私資料後再發佈那份「影文件」,這樣可以確保發佈後的東西安全。

以下假設有一試算表 A 需要發佈並隱藏其中的隱私資料,將複製的步驟說明如下:

  1. 開啟試算表 A
  2. 點選 Google 文件介面中的「檔案>建立副本」,副本試算表的名稱請自訂 (在此以「B」為例)。
  3. 刪除試算表 B 中的隱私欄位
  4. 發佈試算表 B,並以試算表 B 的發佈網址為公佈名單網址。

如果你是想分享(而非發佈為 HTML) 給其他使用者,記得你刪除的資料依然會在「檔案>修訂版本資訊」裡出現,所以變成是要先在試算表 A 裡刪除敏感資料、複製出試算表 B 後,再行復原試算表 A 剛才刪除的資料。進行這樣的動作之前,請先取消試算表 A 的「表單>接受回應」,待資料復原後才打開。

日後要更新時有兩種方案可選:

同試算表、新版本
  1. 開啟試算表 A
  2. 點選 Google 文件介面中的「檔案>匯出> xls」,這樣你會下載一個 MS Excel 檔案,在此例為 A.xls
  3. 以硬碟上的軟體 (MS Office 或 OpenOffice 皆可) 開啟 A.xls,刪去敏感資訊後存檔
  4. 回到 Google 文件,開啟試算表 B
  5. 點選 Google 文件介面中的「檔案>上傳新版本」,接著選取硬碟上的 A.xls 上傳

這麼做的優點是發佈的名單網址 (試算表 B 的發佈網址) 不會變動,缺點是需要硬碟暫存、不方便在公用電腦等地使用。步驟 3 也可以先省略、待步驟 4 與 5 都做完後再直接用 Google 文件編輯,但若要這麼做請記得先取消「有變更時自動重新發佈」,免得把還沒刪除敏感資料的版本送出去。

新試算表

非常簡單,只要按著原來複製出試算表 B 的步驟再從試算表 A 衍生出試算表 C、試算表 D 等等徒子徒孫就可以了。缺點是發佈名單的位置會經常更動 (因為你每次更新的時候真正發佈的試算表都不一樣)。

其他連署方案

由於隱藏 Google 文件表單資料中的隱私資訊如此麻煩,若您真的很需要即時、方便的連署功能,建議採用 Zoho Creator 等其他連署方案,不要用 Google 文件。

2 則留言:

  1. 剛剛才發現發佈為 HTML 時可以選擇發佈的範圍,不過只要改網址的 range 參數就可以輕易看到其他欄位了...如果用伺服端程式直接存取發佈後的 HTML 呢 XD?這樣就不知道原始網址了,而且應該比用 API 容易?

    還是說那個網址有可能被搜尋得到之類的啊 = ="

    回覆刪除
  2. 風痕影,

    是的,網址可以輕易取得。因為他的網址結構中有「key」這玩意,而同一份試算表的表單或發佈結果的 key 值是一樣的。

    不過你的想法倒是適合「本來就不提供表單」的情況呢,感謝~

    回覆刪除

歡迎留下您的意見